git 在什么情况下可以合并丢弃文件中的更改?
Under what circumstances can git merge discard a change in a file?
- 在我的提交历史中,我看到我做了一个提交,我在文件中添加了几行 Masterlist/Index.cshtml.
- 从那以后和 3 个月前都没有其他人编辑过该文件。
- 提交后,有一些冲突的合并已解决,之后有一个没有冲突的合并,删除了文件中的这些行。
- 在文件历史中,除了 3 个月前的那个之外没有任何变化...
提交我添加的行:
合并删除它:
git log --graph --full-history -- ABC/Views/Masterlist/Index.cshtml
产生了这个:
git log -S"-webkit-transform: translateY(-100%) rotate(90deg); /* Safari */" -c
产生了这个:
我的问题:
- 添加的行怎么可能被删除了?会出什么问题?
- 如何防止这种情况发生?
- 为什么文件历史记录中没有条目?
我们在使用 git 时使用源代码树或 Visual studio。
看起来错误的合并是 4246a2
,未能从 2f3f2a
获取更改。
我非常确定(相信提交消息中的冲突文件列表,并为某些重命名检测留出 1% 太疯狂了,尽管我不明白如果不删除文件怎么会发生),如果你检查 3505b4
提交和合并 2f3f2a
,重现有冲突的合并,你的文件 ABC/Views/Masterlist/Index.cshtml
将干净地与你的更改一起上演,没有冲突。
如果确认,则冲突解决中应该出了问题。我认为你应该重新审视与那个人解决冲突的过程。我可以想象它发生的 2 个选项:
解决冲突的tool/process做错了。
执行 4246a2
合并的开发人员使用了 -sours
并手动引入了另一个父级的更改,并以某种方式跳过了该文件的更改。
- 在我的提交历史中,我看到我做了一个提交,我在文件中添加了几行 Masterlist/Index.cshtml.
- 从那以后和 3 个月前都没有其他人编辑过该文件。
- 提交后,有一些冲突的合并已解决,之后有一个没有冲突的合并,删除了文件中的这些行。
- 在文件历史中,除了 3 个月前的那个之外没有任何变化...
提交我添加的行:
合并删除它:
git log --graph --full-history -- ABC/Views/Masterlist/Index.cshtml
产生了这个:
git log -S"-webkit-transform: translateY(-100%) rotate(90deg); /* Safari */" -c
产生了这个:
我的问题:
- 添加的行怎么可能被删除了?会出什么问题?
- 如何防止这种情况发生?
- 为什么文件历史记录中没有条目?
我们在使用 git 时使用源代码树或 Visual studio。
看起来错误的合并是 4246a2
,未能从 2f3f2a
获取更改。
我非常确定(相信提交消息中的冲突文件列表,并为某些重命名检测留出 1% 太疯狂了,尽管我不明白如果不删除文件怎么会发生),如果你检查 3505b4
提交和合并 2f3f2a
,重现有冲突的合并,你的文件 ABC/Views/Masterlist/Index.cshtml
将干净地与你的更改一起上演,没有冲突。
如果确认,则冲突解决中应该出了问题。我认为你应该重新审视与那个人解决冲突的过程。我可以想象它发生的 2 个选项:
解决冲突的tool/process做错了。
执行
4246a2
合并的开发人员使用了-sours
并手动引入了另一个父级的更改,并以某种方式跳过了该文件的更改。