修复git中的合并提交

修复git中的合并提交,git,git-merge,git-reset,Git,Git Merge,Git Reset,我搞砸了。我把另一个分支并入我的分支。双方的变化都很大,所以我花了很长时间来解决冲突。提交合并后,我意识到我忘记添加一个文件,因此合并提交不完整。我不想用一个“忘记的改变”的承诺来污染历史,所以我决定在推动之前修复它。我打电话 git reset --soft HEAD~ 然后我添加了丢失的更改,并希望重新提交。然而,git不再知道它应该是合并提交。有没有办法不重新执行整个合并?您可以签出到分支上的特定提交,因此在合并发生之前返回并重新执行所有操作 继续合并分支: git log 将显示具

我搞砸了。我把另一个分支并入我的分支。双方的变化都很大,所以我花了很长时间来解决冲突。提交合并后,我意识到我忘记添加一个文件,因此合并提交不完整。我不想用一个“忘记的改变”的承诺来污染历史,所以我决定在推动之前修复它。我打电话

git reset --soft HEAD~

然后我添加了丢失的更改,并希望重新提交。然而,git不再知道它应该是合并提交。有没有办法不重新执行整个合并?

您可以签出到分支上的特定提交,因此在合并发生之前返回并重新执行所有操作

继续合并分支:

git log

将显示具有关联ID(或密钥)的分支上的所有提交,只需复制所需提交密钥的前几个字母

git checkout [commit_id you copied]
在合并之前,您现在应该在分支上。
如果您希望继续浏览提交,您可以不使用提交ID进行签出。

如果我想修改上次提交(无论是合并提交还是普通提交),我会怎么做:

  • 进行更改(在您的情况下,添加文件)
  • 阶段性的改变。例如,使用
    git添加。
  • 使用将更改添加到上次提交

    git提交--修改

  • 你完成了吗

    既然你已经不在那一点上了,首先你必须回到那里。怎么做

  • 列出您最后拥有的引用,以找出要还原的合并提交的哈希值。执行

    git reflog

  • 在该列表中搜索并复制合并提交的哈希。查找类似于[…]合并原点/blabal的内容,就在类似于[…]重置移动到头部的内容下方~

  • 重置为该提交(就好像您还没有完成git重置--soft HEAD ~)

    git reset——来自\u BULLET\u 2的硬哈希\u


  • 现在您已经到了提交原始合并的时候了,现在您可以从头开始执行4、5和6。

    我知道我可以“全部重做”,但我问我是否可以“不重新执行整个合并”来修复它(因为这不是一件容易的事)。请注意,如果您签出以前的提交,您处于
    分离头部状态
    ,在该状态下无法提交任何内容。如果您想重做合并(正如我在另一个答案中解释的,这是不必要的),那么您必须使用git reset--hard[commit\u id\u you\u copied]