【问题标题】:Git - How can I roll back the already commited file to unresolved state?Git - 如何将已提交的文件回滚到未解决状态?
【发布时间】:2016-10-18 00:25:06
【问题描述】:

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

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

    Merge branch 'master' of repo into branchA

    Conflicts:
        fileA
        ...

我想将一些文件回滚到未解决状态,并再次解决冲突。我该怎么做?

提前谢谢你。

【问题讨论】:

  • 该提交是否已经推送到其他地方?
  • @EvertonAgner 是的,我已经推送了。 :(

标签: git merge rollback


【解决方案1】:

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

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

【讨论】:

  • 我可以只对某些特定文件执行此操作吗? “git reset abcdefg fileA”之后应该怎么做?
  • 感谢您的帮助。检查后我应该怎么做?我可以将它与提交“hijklmn”合并吗?
  • 我将它与“git checkout -p -- ”合并,但我想知道更好的方法。
【解决方案2】:

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

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

2.第二个选项处理弄乱历史。因此,如果您决定这样做,请记住您将破坏历史,因此您必须冒险!这不是标准做法,因此非常不鼓励。 在您希望修复的分支上执行gitk。 单击要将分支重置到的提交。右键单击并选择reset branch to here。 现在正确地进行合并。 强制将分支推送到 repo。

现在,如果您没有推出更改,那么它会变得更简单。 只需将您的本地功能分支重置为您想要的位置。 重做合并。 对master 进行变基并将其推出。

【讨论】:

  • 可惜我已经推送了。我不介意添加更多提交并留下历史记录,但我不知道该怎么做。我想我可以将文件签出到以前的提交,但我不确定。我只想对某些特定文件执行此操作。
猜你喜欢
  • 1970-01-01
  • 2018-04-06
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多