[英]File deleted during merge conflict resolving is not shown on merge commit
在 git 上合并两个分支时遇到了奇怪的问题。 文件在合并期间被删除,即使我找不到文件被删除的提交。 经过调查,我确实发现文件确实在其中一个合并提交中消失了,即使提交没有列出对文件的任何更改。 这一定是因为开发人员在解决合并冲突时删除了该文件。 为了证明这一点,我创建了一个 git repo 并使用以下命令进行了测试:
git init
echo foo >> first_file
git add .
git commit -am "add first file"
git checkout -b topic_branch
echo bar >> second_file
echo bar >> first_file
git add .
git commit -am "add second file and change the first"
git checkout master
echo conflict >> first_file
git commit -am "create conflict"
git merge topic_branch
rm second_file
echo conflict >> first_file
git add first_file
git commit
git show
如您所见,我在两个分支上创建了两个文件。 一个故意在 topic_branch 上创建合并冲突和第二个文件的文件。 我在解决合并冲突时删除了 second_file。 现在我不明白的是,为什么git show
没有提到删除 second_file 的任何内容。 有没有办法查看合并时实际发生了什么?
当git show
显示合并提交时,它默认使用组合差异。
有几种不同的组合差异格式,但它们都共享一个功能(或错误,取决于您的想法):它们从不显示合并版本与至少一个父版本完全匹配的任何文件。 由于文件的一个父版本是“没有这样的文件”,而文件的合并版本是“没有这样的文件”,并且这些匹配,因此git show
不显示此文件的任何内容。
要使git show
显示此文件的某些内容,请使用git show -m
使其为每个父提交生成一个差异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.