【问题标题】:How can I revert pieces of a Git commit?如何恢复 Git 提交的片段?
【发布时间】:2012-04-08 17:13:16
【问题描述】:

我刚刚合并了两个分开很久的分支,因此产生了很多的冲突。在几天的时间里,解决这些冲突总共花了我大约 16 个小时。

既然冲突已经完成,并且合并已提交,我发现我不小心搞砸了一些冲突。无论如何我可以进入提交,并恢复或更改其中的某些部分吗?

如果解决方案在 Git Extensions 中提供给我,我更愿意,但如果需要,我使用 bash 没有问题。

【问题讨论】:

  • 您是否已将更改推送到上游?如果没有,this question 会为您解答吗?
  • 不,此时更改只是在本地提交。恐怕这个问题对我没有帮助。作为合并的一部分,大约有 1000 个提交可供选择。看起来我可能不得不接受 x539 的建议,因为这对我来说似乎是唯一的选择(这没什么意义,因为我对 git 还很陌生)。

标签: git git-extensions


【解决方案1】:

如果它是最顶层的提交,只需修复问题,准备正常提交并执行

git commit --amend

这将修改您的最后一次提交,即损坏的合并。结果你得到了正确的合并 作为单个提交。如果您已经与其他人共享了合并,则不应修改它,而应添加一个新的提交来修复损坏的东西。

【讨论】:

  • 我想我可能不得不这样做。 git commit --amend 又做了什么?为什么我不在修复后推送另一个提交?
  • 已编辑,但请参阅git commit --help 了解更多信息。为什么不只是另一个提交?因为你要求改变现有的?!好处是干净的历史记录(但永远不要更改上游的历史记录)。
  • 有道理。不久前我想知道如何做这样的事情,所以你可能一次为我解决了 2 个问题。
猜你喜欢
  • 1970-01-01
  • 2018-10-17
  • 2016-06-23
  • 1970-01-01
  • 2018-11-10
  • 2015-06-03
  • 1970-01-01
  • 2019-06-15
相关资源
最近更新 更多