在git rebase期间重新尝试解决冲突

时间:2016-10-20 16:40:39

标签: git git-rebase merge-conflict-resolution git-merge-conflict

我正处于一个非常大的变种中,在我使用git rebase --continue.时解决冲突

试图解决多个文件冲突的部分方法,我意识到我已经弄得一团糟了。在我开始解决冲突之前,有没有一种简单的方法可以回到变基的这个阶段?

显然,我不想使用git rebase --abort并且失去了我花在修复其他冲突上的所有时间。

我发现了以下Stack Overflow问题,但可以采取一些更清晰的步骤:

How to rollback a single conflict resolution during git rebase

特别是-m标志有什么作用? path/to/wrong是我正在重新定位的分支的名称,我正在重新定位的分支或对特定提交的引用吗?

1 个答案:

答案 0 :(得分:1)

要将单个文件重置为未合并的版本,请执行以下操作:

#!/bin/bash

for file in $(git show --pretty=format: --name-only 812b091)
do
  git checkout --merge "$file"
done

如果您知道当前正在应用的提交的原始版本的提交哈希(如果没有,请查看reflog),您可以自动执行该提交中更改的所有文件的进程:

git-checkout

来自-m, --merge手册页:

  

public class SimpleClass { public string MyString; } [Test] public void SerializesSimpleObject() { var simpleClass = new SimpleClass { MyString = "test" }; var serializer = new MySerializer(); Assert.AreEqual( @"<?xml version=""1.0"" encoding=""utf-16""?><SimpleClass xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><MyString>test</MyString></SimpleClass>", serializer.Serialize(simpleClass)); }

     

[剪断]

     

从结构中检出路径时,此选项允许您在指定路径中重新创建冲突的合并。