【发布时间】:2012-07-13 18:44:14
【问题描述】:
我有一个从远程仓库拉取的本地仓库。运行 git pull 和 git fetch; git merge FETCH_HEAD 用于执行完全相同的操作,正如 description of git pull 所预期的那样:
描述
将来自远程存储库的更改合并到当前分支中。在其默认模式下,git pull 是 git fetch 后跟 git merge FETCH_HEAD 的简写。
目前,意外地,运行 git fetch 停止正确更新 FETCH_HEAD 引用。 FETCH_HEAD 现在被困在一个旧的提交上。运行 git fetch 会将所有更改下载到远程跟踪的分支,但 FETCH_HEAD 保持不变,无论它在哪个分支中运行。
# currently in branchone
> git fetch
# branchone is up to date since...
> git rev-parse branchone
593539e8a98ba5980d4b645db3b0f506bb9b6a2c
# ...its in the same commit as the remote branch
> git rev-parse origin/branchone
593539e8a98ba5980d4b645db3b0f506bb9b6a2c
# however FETCH_HEAD shows something different
> git rev-parse FETCH_HEAD
37301df96597ac037f8e7e846fea6fc7df77bea5
git pull 仍然执行正确的任务。但是运行git fetch; git merge FETCH_HEAD 会做一些不同的事情,因为FETCH_HEAD 指向一个不正确的提交。
是否有任何设置或问题可能会影响git fetch 的行为?
【问题讨论】: