0

我读到,在执行 a 之后git fetch,您的本地存储库具有来自原始存储库的所有提交,但它们“尚未集成到克隆存储库的本地分支中”。

这是什么意思/暗示?

然后我是否需要签出我的分支以将更改下拉到我的本地工作副本中?还是暗示别的什么?提前致谢!

4

2 回答 2

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

于 2013-09-26T16:43:48.523 回答
0

Git 有两个命令可以从远程存储库更新自身。git fetch 将使您与另一个 repo 同步,拉下您在本地没有的任何数据,并为您提供同步时该远程上每个分支所在位置的书签。这些被称为“远程分支”,与本地分支相同,只是 Git 不允许您检出它们 - 但是,您可以从它们合并、将它们差异到其他分支、在它们上运行历史日志等。你做所有同步后本地的那些东西。

从远程服务器获取新数据的第二个命令是 git pull。该命令基本上将立即运行 git fetch ,然后是该远程上的分支的 git merge ,该远程分支由您当前所在的任何分支跟踪。单独运行 fetch 和 merge 命令涉及更少的魔法和更少的问题,但如果你喜欢拉的想法,您可以在官方文档中更详细地阅读它。

从这里复制

于 2013-09-26T16:40:01.310 回答