Git - 如何将已提交的文件回滚到未解析的状态?

时间:2016-06-16 12:58:42

标签: git merge rollback

我合并了两个分支,并且已经提交了它。 但是,我发现在解决冲突时我在某些文件中出错了。

commit 1234567
Merge: abcdefg hijklmn
Date: ....

    Merge branch 'master' of repo into branchA

    Conflicts:
        fileA
        ...

我想将某些文件回滚到未解析状态,然后再次解决冲突。我怎么能这样做?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用git reset 'commit_id' --hard在合并提交之前重置当前分支一次提交。然后再次合并分支并提交。

如果您只想更改单个文件,假设您想要的合并提交是abcde:git checkout abcde~1 'path/to/file'。在提交之前将文件恢复到状态。然后再次合并。引自:https://stackoverflow.com/a/215731/1712948

答案 1 :(得分:0)

如果您已经推出了更改,那么这就是一个问题。 有两种选择,

1.添加更多提交并更正您所犯的错误。确保提交消息解释了您为什么这样做。这将确保正确维护历史记录。

2.第二个选项涉及弄乱历史。因此,如果您决定这样做,请记住您将破坏历史记录,因此您必须承担风险!这不是一种标准做法,而且非常气馁。 在您希望修复的分支上执行gitk。 单击要将分支重置为的提交。右键单击并选择reset branch to here。 现在正确合并。 强制将分支推到回购站。

现在,如果您没有推出更改,那么它就会变得更简单。 只需将本地功能分支重置为您希望的位置即可。 重做合并。 重新启动master并将其推出。