当我运行时
git diff FETCH_HEAD
我从远程获取了更新版本后,它列出了许多预期的更改。
但是...
当我运行时
git merge FETCH_HEAD
它告诉我所有内容都是最新的!!
我错在哪里了?
git diff FETCH_HEAD
我从远程获取了更新版本后,它列出了许多预期的更改。
但是...
当我运行时
git merge FETCH_HEAD
它告诉我所有内容都是最新的!!
我错在哪里了?
为什么在合并后FETCH_HEAD
与HEAD
不同?
合并会创建一个新的提交,其中包含原始HEAD
(现在是ORIG_HEAD
)和FETCH_HEAD
中的所有更改。这意味着如果您的原始HEAD
中包含未包含在FETCH_HEAD
中的更改,则新的(合并的)HEAD
将与FETCH_HEAD
不同,因为它还包含了那些提交。
需要检查的事项
由于上述原因或其他原因,您当前的分支可能已经与以前获取的FETCH_HEAD
保持最新状态。
要检查这一点,请按以下方式从获取头部获取sha
(十六进制数字):
git log -1 FETCH_HEAD
commit bec5aadef68a5d29c9d523358a0189b86cad4c82
Author: Alex Brown <alex@XXX>
Date: Tue Nov 16 10:05:19 2010 +0000
weather report
复制FETCH_HEAD
的前6位数字:bec5aa
接下来,在您当前版本的祖先中搜索此sha
。
git log HEAD | grep "commit bec5aa" -A 5
commit bec5aadef68a5d29c9d523358a0189b86cad4c82
Author: Alex Brown <alex@XXX>
Date: Tue Nov 16 10:05:19 2010 +0000
weather report
FETCH_HEAD
已经被合并。你看到的任何差异都在当前的HEAD
中,它可能是合并后的HEAD
(或其后代)。cd /tmp
mkdir 1
cd 1
git init
echo "Woo" > a.txt
git add a.txt
git commit -m "first commit"
cd ..
git clone 1 2
cd 1
echo "Its nice today" >> a.txt
git commit -a -m "weather report"
cd ..
ls
cd 2
ls
echo "Like peas in a pod" > b.txt
git add b.txt
git commit -m "sayings"
git fetch
git diff FETCH_HEAD
git merge FETCH_HEAD
git diff FETCH_HEAD
FETCH_HEAD
是否已包含在 HEAD
中,可以调用 git log HEAD..FETCH_HEAD
。这将显示所有 FETCH_HEAD
中尚未包含在 HEAD
中的提交。如果输出为空,则无需合并。还可以考虑使用像 gitk 这样的图形工具。 - Sven Marnach
git status
进行检查。尝试使用git diff HEAD FETCH_HEAD
来避免与当前工作树进行比较。 - Sven Marnach