在文件X.java中进行了更改 - 通过hg repo explorer,我看到了我的更改。
X.java中的已提交更改为本地存储库
我从中央仓库中提取了更改,其中还包括X.java中其他开发人员的非冲突更改 - 我看到其他开发人员在X.java中创建了chages。
我在本地合并了两个版本,
合并之后,我看到的是其他开发人员所做的更改仅丢失(!)仅用于此文件,并且合并后文件与我在合并之前提交的文件相同。所有其他仅由其他人更改的文件完好无损。
我不确定为什么合并覆盖了其他开发人员的更改,我发现这发生在所有开发人员都已更改,合并和提交的文件中。
我正在使用乌龟来处理所有恶劣的任务。
任何人都可以帮我理解发生了什么吗?
另外,无论如何我可以搜索由于之前的合并而已被覆盖并已经提交到中央仓库的文件,以便我可以修复它们吗?
非常感谢,
**评论中添加的更新**
我认为由于此文件中的更改是非冲突的,我认为mercurial不会启动任何工具或Kdiff或要求我手动选择。我认为它自动充电了。如果我不是100%肯定的话,mercurial可能会将文件标记为“U”(未解决),在检查了非冲突的更改后,我可能选择了“Mark conflict as resolved”选项。我记得我这样做的几个文件不确定我是否在这种情况下这样做。所以只有两种可能性1. Mercurial可能在没有我介入的情况下自动合并2.我可能选择了“Mark as resolved”选项。 - alwaysLearning
答案 0 :(得分:2)
您的第二个操作'标记为已解决'将完美地描述您拥有的结果。使用mark作为解析(来自命令行的hg resolve --mark
)告诉他们:“磁盘上的工作副本是这两个文件的完美结合,应该是提升到合并变更集的东西”。如果你在实际合并这些文件之前这样做,除了生成的文件中的合并左侧父项之外什么都没有,这听起来就像你拥有的那样。
幸运的是,您可以随时重新合并:
hg update -r leftParentRevisionId
hg merge rightParentRevisionId
..do your manual merges as necessary.
hg commit -m 'merged left and right'
不幸的是,如果人们已经根据你之前推出的不完全合并做了进一步的工作,那么你也需要完成这项工作。
一般来说,合并与打字一样,也是编码的一部分。这是一种有意识的人类行为,值得关注和代码审查。