一、
- 首先从远程仓库 clone 到本地仓库,当前的版本库只有一个 master 分支。
- 接着在远程仓库创建 dev 分支,新建文件
file6.txt
,commit 为d13224
。
- git fetch 拉取远程仓库的内容到本地仓库。
- 执行
git fetch
之后,git 版本库中会多了一个文件 FETCH_HEAD。 - FETCH_HEAD 分别记录了远程仓库的 master 分支和 dev 分支的最新 commit。
- 只有
git fetch
动作,会让 FETCH_HEAD 文件的内容更新。
- 远程仓库的 dev 分支再次提交 commit。
- 可以看到,
git pull
的本质就是: - 先执行
git fetch
,更新当前 dev 分支的最新的 commit 信息。 - 再执行
git merge
,使用 FETCH_HEAD 第一个标注的内容作为 merge 的目标(此处就是 远程仓库的 dev 分支)。
- 还可以看到,在执行完 merge 动作之后,git 版本库中多了一个文件:ORIG_HEAD。
- 可以看到,ORIG_HEAD 的内容,就是 dev 分支的上一次 commit。
- 该 ORIG_HEAD 文件是 git 版本库在我们 merge 合并之后,”反悔“使用的,即把合并后的版本回滚撤销。
- 之后,我们还是可以再次进行合并的。