使用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。但是,提交b
和c
中的任何内容都是我不想要的垃圾。
如何使远程仓库成为a-d-e
? (远程主人已经有a-b-c
,因为我在分支到分支之前做了一次推送2)我真的不想搞砸回购,git push origin master --force
会是一个不错的选择吗?
编辑:在淹没git revert
之后,我发现this question值得一读
答案 0 :(得分:1)
git push origin master --force
会根据您的意愿重写历史记录。但是,如果有其他开发人员从回购中撤出,将会给他们带来麻烦。
作为一项规则,如果您已经推送了提交而不是重写历史记录,那么您应该执行git revert <sha>
这将使新提交撤消所提供的sha的更改。这并没有从历史记录中消除问题,但会造成最少的麻烦。