【发布时间】:2018-01-24 21:21:46
【问题描述】:
我搞砸了。我将其他分支合并到我的分支。双方的变化都很大,所以我花了很长时间解决冲突。提交合并后,我意识到我忘记添加一个文件,所以合并提交不完整。我不想用“被遗忘的更改”提交污染历史,所以我决定在推送之前修复它。我打了电话
git reset --soft HEAD~
然后我添加了错过的更改并想重新提交。但是,git 不再知道它应该是一个合并提交。有没有办法不重新做整个合并?
【问题讨论】:
我搞砸了。我将其他分支合并到我的分支。双方的变化都很大,所以我花了很长时间解决冲突。提交合并后,我意识到我忘记添加一个文件,所以合并提交不完整。我不想用“被遗忘的更改”提交污染历史,所以我决定在推送之前修复它。我打了电话
git reset --soft HEAD~
然后我添加了错过的更改并想重新提交。但是,git 不再知道它应该是一个合并提交。有没有办法不重新做整个合并?
【问题讨论】:
【讨论】:
detached HEAD state 并且您无法在该状态下提交任何内容。如果您想重做合并(没有必要,正如我在另一个答案中解释的那样),您必须使用git reset --hard [commit_id_you_copied] 硬重置 到该提交
如果我想修改我的最后一次提交(无论是合并提交还是普通提交),我会怎么做:
git add .
将更改添加到上次提交
git commit --amend
你已经完成了
既然你已经不在那个地方了,首先你必须回到那个地方。怎么样?
列出您最后的引用,以便找出您要恢复的合并提交的哈希值是什么。执行
git reflog
在该列表中搜索并复制合并提交的哈希值。寻找类似 [...] merge origin/blablabal 之类的东西,就在 [...]reset 移动到 HEAD 之类的下面~
重置为那个提交(好像你还没有完成git reset --soft HEAD~)
git reset --hard HASH_FROM_BULLET_2
现在您处于刚刚提交原始合并的位置,现在您可以从头开始执行 4、5 和 6。
【讨论】: