了解git抓取和您的本地仓库

时间:2013-09-26 16:32:46

标签: git git-branch git-pull git-checkout git-fetch

我读到这一点,在执行git fetch之后,您的本地仓库拥有原始仓库的所有提交,但是它们尚未集成到克隆存储库的本地分支中#&#34} 34。

这意味着什么/暗示?

我是否需要签出我的分支机构以将更改下载到我的本地工作副本中?或者它意味着别的什么?提前谢谢!

2 个答案:

答案 0 :(得分:1)

git fetch更新远程跟踪分支的本地副本。如果您配置的远程是origin(通常是这种情况),则git fetch将更新origin/master以及远程存在的任何其他分支。这些分支指向远程分支当前所在的提交。

例如,考虑调用git log --pretty=oneline --abbrev-commit --graph --decorate --all

* 46960d3 (origin/master) Commit 5
* 8b050c8 Commit 4
* cee210b (HEAD, master) Commit 3
* 075aafe Commit 2
* 69ade0a Commit 1

在这种情况下,git fetch检索了两个新提交(4和5),但本地master分支仍然落后。

要纠正这种情况,必须检查master是否尚未签出(git checkout master),然后合并新的提交(git merge origin/master)。

git pull实际上是“从当前分支正在跟踪的远程提取,然后与提取的提示提交合并”的同义词。在这种情况下,它等同于git fetch origin && git merge origin/master

答案 1 :(得分:0)

  

Git有两个命令可以从远程存储库更新自己。混帐   fetch将使您与另一个repo同步,下拉任何数据   您没有在本地,并为每个人提供书签   您同步时该遥控器上的分支。这些被称为   “远程分支”和除Git之外的本地分支相同   不允许你检查它们 - 但是,你可以合并   他们,将他们分散到其他分支,在他们上运行历史记录,等等   同步后在本地执行所有这些操作。

     

第二个命令,用于从远程服务器获取新数据   是git pull。这个命令基本上会立即运行git fetch   然后是跟踪的遥控器上的分支的git合并   通过您当前所在的任何分支。运行提取和合并   命令分别涉及较少的魔法和较少的问题,但如果你   像拉的想法,你可以在更详细的阅读   官方文件。

Copied from here