【发布时间】:2012-01-31 02:56:23
【问题描述】:
根据文档,git pull 执行 git fetch 然后 git merge,但是在这种情况下执行 git pull origin master 应该执行 git fetch origin master 对吗?但是,它似乎没有这样做。这是一个例子。
假设我的远程源主机(在我的例子中是在 GitHub 上)具有以下历史记录:
commit 1111111 : my first commit
commit 2222222 : a commit from someone else
我只有在本地进行第一次提交,如下所示
git checkout master
git log --pretty=format:'%h' -n 1
1111111
git checkout origin/master
git log --pretty=format:'%h' -n 1
1111111
从这里我拉动并查看结果如下:
git checkout master
git pull origin master
git log --pretty=format:'%h' -n 1
2222222
git checkout origin/master
git log --pretty=format:'%h' -n 1
1111111
可以看出,pull 确实使用来自远程源的新提交更新了我的 master 分支,但我的本地 origin/master 仍然在原处。强迫我做以下事情
git fetch origin master
git checkout origin/master
git log --pretty=format:'%h' -n 1
2222222
这是 git pull 的正确行为还是我配置了一些错误?我浏览了 git pull 手册页并没有看到任何建议,但我可能错过了。
【问题讨论】:
-
看看这是否有助于向您解释原因。 stackoverflow.com/questions/2452226/… 或者这个stackoverflow.com/questions/2883840/…
-
您可能要考虑先执行
git fetch,然后执行git merge。您通常会得到更少的惊喜,并且可以更好地控制如何合并。 -
@CharlesBailey 是的,我同意 Matthias 和我正在讨论同样的问题。可惜他的问题没有出现在我之前的搜索中。
标签: git github git-pull git-fetch