推到顶部,留下中间的两个提交

时间:2014-11-20 17:46:30

标签: git github commit git-push git-commit

假设我有以下提交

cccc[recent]

bbbb

aaaa

现在我在cccc中遇到了错误,我已经通过

回滚到aaaa

git reset --hard aaaa

我在这里工作过,这一切都发生在bugs分支

现在,当我尝试将cmmits推送到bugs分支时,它正在告诉

! [rejected]        bugs -> bugs (non-fast-forward)
error: failed to push some refs to 'my url'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我想推送我的更改并删除bbbb和'cccc`提交。

怎么做?

1 个答案:

答案 0 :(得分:2)

由于你已经推了它,你应该做git revert而不是强制推送

$ git revert cccc
$ git revert bbbb

这将在历史记录中保留提交ccccbbbb,并在其上引入新的提交以恢复更改。

o-----o-----o-----o-----o
^     ^     ^     ^     ^
|     |     |     |     |
aaaa  bbbb  cccc  cccc' bbbb'

如果您想在一次提交中还原bbbbcccc

$ git revert --no-commit bbbb
$ git revert --no-commit cccc
$ git commit -m 'Reverted commit bbbb and cccc'

如果您想通过强制推送来恢复更改

$ git reset --hard aaaa
$ git push -f

您应该确保没有其他开发者已经在bbbbcccc之前提交了提交。