如何通过只有冲突文件来解决git冲突?

时间:2015-07-06 16:26:57

标签: git merge recovery disaster-recovery

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

实际上,我有一个很多的文件似乎是这样的:

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

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

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

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

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

我该怎么办?

扩展程序#1: 我用一些shellcripting分割文件,使用命令

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

现在,我在path.0path.1中拥有这些文件的部分内容。现在我需要一个交互式解决方案来合并它们。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

private void invokeOGShareDialog(Bitmap bitmap) {

    // Create OG object
    ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
            .putString("og:type", "books.book")
            .putString("og:title", "A Game of Thrones")
            .putString("og:description", "In the frozen wastes to the north of Winterfell, " +
                    "sinister and supernatural forces are mustering.")
            .putString("books:isbn", "0-553-57340-3")
            .build();

    SharePhoto photo = new SharePhoto.Builder()
            .setBitmap(bitmap)
            .setUserGenerated(true)
            .build();

    // Create an action
    ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
            .setActionType("books.reads")
            .putObject("book", object)
            .putPhoto("image", photo)
            .build();

    // Create the content
    ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
            .setPreviewPropertyName("book")
            .setAction(action)
            .build();

    ShareDialog.show(this, content);

}