git 重新理解
工作区域--执行状态
工作区、暂存区(也可称为索引区)和版本区
工作目录 / The working directory
暂存索引 / Staging Index 查看命令:git ls-files
git status 的结果就是作区和暂存区两者的差别即内容不一致的地方。
状态:
已修改(modified)、已暂存(staged)、已提交(committed)
git checkout--文件名 撤销工作区改动
0. .gitignore 中的文件会被忽略git status 命令,列出被忽略的文件,具体命令如下:git status --ignored
1.untracked
没有被追踪的文件,现在,我们使用 git add 命令,追踪修改的文件
执行 git add 命令将文件从工作区添加到暂存区里面,
Git 会把帮助我们生成一些 Git 的对象,它存储的是文件的内容和文件类型并不存储文件名称
<<<----- (use "git reset HEAD ..." to unstage)
2.将其提交到代码仓库(本地),而其命令就是 git commit
查看历史-- 交历史 / Commit history-- 执行 git log 将显示 Commit History
<<<----- git reset 和 git checkout
3.多次提交会形成一个线性节点链
C2节点包含C1提交内容,同样C3节点包含C1、C2提交内容
4.推送
5.分支整合
merge 与 rebase 都是非常强大的分支整合命令
:合并(merge)以及变基(rebase
交互式变基 (git rebase -i)、
合并提交 (git merge --squash) 和重写提交 (git commit --amend)
merge 遇见冲突后会直接停止,等待手动解决冲突并重新提交 commit 后,才能再次 merge
rebase 遇见冲突后会暂停当前操作,开发者可以选择手动解决冲突,
然后 git rebase --continue 继续,
或者 --skip 跳过(注意此操作中当前分支的修改会直接覆盖目标分支的冲突部分),
亦或者 --abort 直接停止该次 rebase 操作
6.其他
.Branch 和 HEAD
HEAD分离的状态 (detached HEAD)
HEAD引用和当前分支的引用
untracked unmodified modified
added deleted renamed copied
updated but unmerged ignored
pull 的本质就是fetch+merge
git merge 和
git 背后
Git 仓库中有五个对象:
三个 blob 对象(保存着文件快照)、
一个 树 对象 (记录着目录结构和 blob 对象索引)
以及一个 提交 对象(包含着指向前述树对象的指针和所有提交信息
创建新分支的呢?即创建了一个可以移动的新的指针
一个名为 HEAD 的特殊指针--》HEAD 指向当前所在的分支
压扁提交(squash commits)--git-squash
命令是 git rebase ,该命令能将所有提交最终合并为一个提交
git
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET https://example.com/api/users?query={"name":"John","age":"30"}
# 指定克隆远程分支 `/develop/branch_1## 标题`
> git clone -b /develop/branch_1 git@www.gitee.com/ghimi/hello.git
>> git check out
git checkout -t origin/develop/branch_1 在本地创建分支并追踪同名的远程分支
标签:文件,Git,思考,--,命令,git,提交,基本操作
From: https://www.cnblogs.com/ytwang/p/17818111.html