所以我正在和其他人一起做一个项目,有很多个GitHub分叉在工作。有人刚刚解决了一个问题,我和他的叉子合并了,但后来我意识到我可以找到一个更好的解决方案。我想恢复我刚才所做的承诺。我试着用git revert HEAD
但它给了我一个错误:
fatal: Commit <SHA1> is a merge but no -m option was given.
那是什么意思?当我合并并提交时,我确实使用-m选项来表示“合并为<username>“
我在这里做错什么了?
发布于 2018-03-28 08:59:01
默认情况下git revert
拒绝还原合并提交,因为这实际上意味着含糊不清。我猜你的HEAD
实际上是合并提交。
如果要还原合并提交,则必须指定要考虑的合并的父节点为主主干,即要还原到什么。
通常,这将是家长的第一位,例如,如果在master
并做到了git merge unwanted
,然后决定恢复unwanted
。第一个家长是你的预合并。master
分支和第二个父级将是unwanted
。
在这种情况下,可以:
git revert -m 1 HEAD
发布于 2018-03-28 09:56:09
假设另一个人在foo之上创建了一个BAR,但是同时创建了Baz,然后合并了,给出了
$ git lola
* 2582152 (HEAD, master) Merge branch 'otherguy'
|\
| * c7256de (otherguy) bar
* | b7e7176 baz
|/
* 9968f79 foo
无骰子git revert
:
$ git revert HEAD
fatal: Commit 2582152... is a merge but no -m option was given.
使用git revert
如
$ git revert --no-edit -m 1 HEAD
[master e900aad] Revert "Merge branch 'otherguy'"
0 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 bar
有效删除bar
产生了一段历史
$ git lola
* e900aad (HEAD, master) Revert "Merge branch 'otherguy'"
* 2582152 Merge branch 'otherguy'
|\
| * c7256de (otherguy) bar
* | b7e7176 baz
|/
* 9968f79 foo
但我怀疑你想扔掉合并提交:
$ git reset --hard HEAD^
HEAD is now at b7e7176 baz
$ git lola
* b7e7176 (HEAD, master) baz
| * c7256de (otherguy) bar
|/
* 9968f79 foo
https://stackoverflow.com/questions/-100007819
复制相似问题