繁体   English   中英

合并冲突解决期间删除的文件未显示在合并提交中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM