Git不完全操作指南之远程操作2——fetch
Git的远程仓库操作其实归纳为:推送数据到远程仓库和从远程仓库获取数据。
我们先来看一个示例:现在我们有一个本地仓库(实线)和远程仓库(虚线),本地仓库落后与远程仓库2个版本(如下图):
然后我们执行以下命令:
# 获取远程仓库的信息
git fetch
执行了上述命令后,我们再来看看本地分支:
我们可以看到,此时我们本地检出的远程分支已经同步数据,将原本没有的C2和C3两个提交也同步过来了(这就相当与你在你本地一顿开发,同时有其他的小伙伴推送了他们的修改到远程分支,你执行fetch之后,你本地的远程分支也能够拿到对方的提交(*注意:执行fetch仅仅只是同步了本地的远程分支o/main,但由于头指针分离的原因,你实际进行代码开发的本地分支并没有变化,依然还是指向C1那一次的提交,因此,如果你想要让本地分支也同步更新,光靠这个命令还不行,这个之后再详说。))
fetch命令都做了什么?
git fetch 完成了仅有的但是很重要的两步:
- 从远程仓库下载本地仓库中缺失的提交记录
- 更新远程分支指针(如
o/main)
git fetch 实际上将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态。
远程分支反映了远程仓库在你最后一次与它通信时的状态,git fetch 就是你与远程仓库通信的方式了!
git fetch 通常通过互联网(使用 http:// 或 git:// 协议) 与远程仓库通信。
再次强调:
git fetch并不会改变你本地仓库的状态。它不会更新你的main分支,也不会修改你磁盘上的文件。理解这一点很重要,因为许多开发人员误以为执行了
git fetch以后,他们本地仓库就与远程仓库同步了。它可能已经将进行这一操作所需的所有数据都下载了下来,但是并没有修改你本地的文件。