4

我有一个非常有问题的 git 合并,我的回购现在有点麻烦。

实际上,我有很多文件看起来是这样的:

<<<<<<< HEAD
...version1...
=======
...version2...
>>>>>>> <long hexa code>

众所周知,这是合并冲突情况下的正常行为。我没有其他文件版本,只有这些。

我如何以交互方式合并它?我需要的是看到彼此相邻的“version1”和“version2”并能够以交互方式合并它们。

当然,这些文件格式意味着每个软件的语法错误。

git merge并且所有的合并工具都在说,没有合并冲突。但是还有。

我应该怎么办?

扩展#1: 我用一点shellscripting分割文件,使用命令

for i in $(cat ../conflicts); do csplit $i '/=======/' -f $i. -n 1;done

现在我将这些文件的部分path.0放在path.1. 现在我需要一个交互式解决方案来合并它们。

4

2 回答 2

1

如果 git 说没有合并冲突,那么这些文件要么按原样添加,要么已提交。

如果它们已按原样添加,那么您应该运行git reset HEAD它将重置索引的状态。然后,您应该再次看到您已提交的所有文件都是新文件,在这种情况下,您可以单独处理它们。

如果它们实际上已经提交,那么您需要撤消合并节点,然后再次执行合并节点。您可以使用git reset --hard HEAD^重置到最后一个已知点(并丢弃提交)并再次重新进行合并。请注意,此选项会丢失您的数据;您正在有效地重新进行合并。

于 2015-07-06T16:32:46.220 回答
1

git mergetool如果要解决图形环境中的冲突,可以尝试该命令。当然,您需要安装有效工具之一。这是文档的摘录;注意列出的有效值:

git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>...]

   -t <tool>, --tool=<tool>
       Use the merge resolution program specified by <tool>. Valid values include emerge, gvimdiff,
       kdiff3, meld, vimdiff, and tortoisemerge. Run git mergetool --tool-help for the list of
       valid <tool> settings. 
于 2015-07-06T16:40:21.427 回答