与上游同步fork:git fetch + git checkout + git merge与git checkout + git pull

时间:2016-11-15 05:34:40

标签: git git-merge git-pull git-fork git-fetch

Github-Help: Syncing a Fork处的文档显示了三条命令,可以让我的GitHub fork与上游仓库保持同步。

git fetch upstream
git checkout master
git merge upstream/master

我可以使用以下两个命令而不是上述三个命令吗?

git checkout master
git pull upstream/master

这两组命令是等价的,还是它们之间存在差异?

1 个答案:

答案 0 :(得分:0)

这些命令集不等效。

git pull

分为两个命令:

git fetch
git merge

问题是,git fetch需要远程引用,而git merge需要跟踪引用,这就是Github帮助页面的原因:

git fetch upstream

但它有

git merge upstream/master

merge命令将采用upstream/master分支并将其合并到当前检出的分支(在本例中为“master”)。但是fetch命令在分支上不起作用,它需要一个遥控器,所以当你尝试:

git pull upstream/master

Git将其拆分为:

git fetch upstream/master
git merge upstream/master

将在fetch上失败:

$ git pull upstream/master
fatal: 'upstream/master' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.