我正在使用Mageploy对开发人员之间的管理面板更改进行版本控制,但看起来Git无法合并CSV文件中的完全不同的行,其中包含已执行操作的记录。
在每种情况下,当两个开发人员在管理面板中更改其本地环境并提交更改时,如果他们没有轮流执行(其中一个提交,另一个合并,然后提交,则第一个合并),git会希望他们在合并后在一个或另一个分支之间选择。
在下图中,您可以看到分支 test1 的CSV和分支 test2 的CSV。这些行完全不同,但即使没有可用的合并策略也可以工作(章鱼我们的递归解析子树)。
我只需要将test2中的行添加到test1中的所有行。并且,理想情况下,无论是test1添加到test1还是test1添加到test2(因为添加行通常将它们放在底部),正确合并而不会发生冲突。
示例:
test1.csv
old-entry
old-entry
old-entry
test1-a
test1-b
test2.csv
old-entry
old-entry
old-entry
test2-c
开发人员一个将test2合并到他们的test1
中old-entry
old-entry
old-entry
test1-a
test1-b
test2-c
开发人员两个将测试1合并到他们的test2
中old-entry
old-entry
old-entry
test2-c
test1-a
test1-b
答案 0 :(得分:0)
我无法找到一种方法让Git在合并期间保留CSV文件中的所有行而不会发生冲突。根据@ tim-biegelesein和@torek的评论,没有办法让Git从这两个分支中划线。
我将使用这样的东西在我的开发自动化脚本中解决这个问题。它只是删除合并标记并提交合并。
git merge $targetBranch
sed -i -e "/<<<<<<<\|=======\|>>>>>>>/d" /path/to/mageploy_all.csv
git commit --all --file .git/MERGE_MSG
如果不打开编辑器,参数--no-edit
无法使用默认合并消息。而是指定合并消息文件。
然而,这似乎仍然容易受到上述问题中示例中显示的问题的影响 - 这些合并的顺序。
我怀疑Git会在CSV中看到不同的行顺序时发生另一个冲突,因为test1与test2合并而test2与test1合并,看到这些行已交换位置。
没有任何意义上的冲突,或者至少没有任何合并策略,但似乎现在唯一的选择是编写更多的代码来解决这些情况。