我对TortoiseGit还比较陌生。想知道,如果我在一个.resx文件上遇到冲突,如何在合并时解决冲突?例如,我可以从菜单中选择“使用theirs”,尝试进行拉取和推送,但这是正确的方法吗?我能否以某种方式使用theirs并与我的项目更改重新构建它?差异(以及与存储库相比混乱的内容)很多 - 太多了,无法进行真正的合并。感谢您的关注。
我对TortoiseGit还比较陌生。想知道,如果我在一个.resx文件上遇到冲突,如何在合并时解决冲突?例如,我可以从菜单中选择“使用theirs”,尝试进行拉取和推送,但这是正确的方法吗?我能否以某种方式使用theirs并与我的项目更改重新构建它?差异(以及与存储库相比混乱的内容)很多 - 太多了,无法进行真正的合并。感谢您的关注。
这是一个旧问题,一直未得到解答。不过在处理resx文件中的冲突时让我感到很烦恼。主要问题似乎在于更新时可以随便更改resx文件,而Visual Studio并不关心顺序。结果因为两个resx文件中元素位置不同而出现了很多微不足道的“冲突”。
我发现解决方法是在合并前按名称属性对resx文件进行排序。这篇文章解释了如何做到这一点并提供了一个简单的命令行工具。作者提到了如何将其集成到不同的diff/merge工具中。他的例子是Beyond Compare 3(我用的)和这篇文章提供了集成方法。
我尝试了这个方法,第一次成功地合并了带有GUI更改的分支,没有损失头发或数小时在Visual Studio中手动修复问题。
我希望这个答案对大家有帮助,就像它对我有帮助一样。
我的解决方案有点取巧,但它也处理了Resources.designer.cs文件。
VS会根据Resources.resx自动生成Resources.designer.cs,所以我只需要修复后者并重新生成Resources.designer.cs。
通常我会按照以下步骤进行操作:
关闭VS
命令行:git merge(将src分支合并到当前分支)
查看Resources.resx中的冲突
删除Resources.Designer.cs文件(它将在稍后重新生成)
使用某个解决工具打开Resources.resx(我通常使用notepad++)
手动解决冲突(在notepad中,通常我会搜索"<<<",删除"<<<"、"-----"、">>>>"这些行,并添加丢失的内容,然后保存)
使用该项目打开VS,它会提示缺少Resources.designer.cs文件。
双击Resource.resx,在末尾添加一行虚拟数据并保存(这样会重新创建Resources.designer.cs)
删除之前创建的虚拟数据行并保存。