我们正在将Master合并到Feature Branch中,突然,我们观察到一些文件出现了冲突。
- 这些文件从未移至 Master
- 文件中的冲突标记在正确的部分显示 Head,但主标记显示来自完全不同文件的内容。
不确定 2. 如何可能?我们现在真的很害怕。
<?xml version="1.0" encoding="UTF-8"?>
<ApexPage xmlns=http://soap.sforce.com/2006/04/metadata>
<<<<<<<< HEAD:salesforce_sfdx/force-app/main/default/pages/xyz.page-meta.xml
<apiVersion>53.0</apiVersion>
<label>xyz</label>
========
<apiVersion>55.0</apiVersion>
<label>abc</label>
>>>>>>>> development:salesforce_sfdx/force-app/main/default/pages/abc.page-meta.xml
</ApexPage>
我在这里添加一个答案,并受到 @torek 答案的启发,提出了一个潜在的解决方案。
很明显,问题是由于 Git(错误地)推断发生了重命名,并决定采取相应的操作。目前还不清楚为什么,但 torek 建议使用git diff --find-renames
为了进行故障排除,我阅读了手册并发现了两个可能对您有帮助的选项:
-
您可以告诉 Git 在查找重命名时要严格,仅将相同的文件视为重命名:
git merge --find-renames=100% <rest of your merge command>
-
你可以告诉 Git 完全关闭重命名检测:
git merge --no-renames <rest of your merge command>
要使这一切有意义,您需要知道的是 Git 仅在每次提交中存储整个项目树的快照。提交实际上并不存储为更改集,而是存储为完整的新快照。因此,每当您合并、挑选、查看日志、进行比较时,所有这些都是通过比较这些快照来完成的。重命名也不例外:您确实这样做了git mv
提交中的内容不被存储,它是通过与前一个提交的差异来推断的,或者当存在多个时,可能在合并基础之间推断。有时这种推论会出错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)