通过本地分支的内容完全覆盖远程分支

时间:2013-05-23 13:01:00

标签: git

使用git时我犯了一个错误:

#In master, which has commits like a-b-c#
git push origin master
git checkout -b branch2
# Now I'm in the branch2, and I did:
git reset --hard a
# work...
git commit ...
# work...
git commit ...
# so, now I have commits in branch2: a-d-e

如果我回到master并合并branch2,它将类似于a-b-c-d-e。但是,提交bc中的任何内容都是我不想要的垃圾。

如何使远程仓库成为a-d-e? (远程主人已经有a-b-c,因为我在分支到分支之前做了一次推送2)我真的不想搞砸回购,git push origin master --force会是一个不错的选择吗?

编辑:在淹没git revert之后,我发现this question值得一读

1 个答案:

答案 0 :(得分:1)

git push origin master --force会根据您的意愿重写历史记录。但是,如果有其他开发人员从回购中撤出,将会给他们带来麻烦。

作为一项规则,如果您已经推送了提交而不是重写历史记录,那么您应该执行git revert <sha>这将使新提交撤消所提供的sha的更改。这并没有从历史记录中消除问题,但会造成最少的麻烦。