一、git fetch & git pull 图解
- 最开始,github 上存放着我们的远程仓库代码。
- 然后在本地通过 git clone 命令,将远程仓库拉取到本地仓库。
- 此时,本地仓库的 origin/master 的内容,是远程仓库 master 的一个副本;同时,本地仓库的 master 与 origin/master 相同。
- 突然,远程仓库上有了一次新的提交 commit,远程仓库的 master 分支前进了。
- 但是,本地仓库不会有变化。
git fetch
只会改变本地仓库的 origin/master 的内容,不会对本地仓库的 master 分支内容有影响。
- 执行 git merge ,就会更新本地仓库的 master 分支的内容。
- git pull 本质就是: git fetch + git merge
二、 3 way merge 的情况
- 远程仓库进行了一次提交,此时远程仓库比本地仓库前移了.
- 本地仓库也有一次提交,本地仓库的 master 分支前移.
- git fetch 将远程仓库的 master 分支同步到本地仓库的 origin/master.
- git merge 合并:此时 master 分支向前进, origin/master 保持不变。
- 最后,还要将本地仓库的 master 分支推送到远程仓库的 master 分支。
三、演示
- 当前本地仓库的状态:master 分支和 origin/master 分支均指向 commit :" update file1.txt"。
- 执行 git pull:先 git fetch 再 git merge。
- 最后还要将本地仓库的 merge 状态,推送到远程仓库的 master 分支。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)