0

我在使用 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,它将类似于abcde。但是,提交中的任何东西b都是c我不想要的完全垃圾。

我怎样才能使远程回购成为a-d-e?(遥控器的主人已经有了,a-b-c因为我在分支到 branch2 之前做了一个推送)我真的不想搞砸 repo,会git push origin master --force是一个好的选择吗?

编辑:在 goolging 之后git revert,我发现这个问题值得一读

4

1 回答 1

1

git push origin master --force将按照您的意图重写历史。但是,如果有其他开发人员从 repo 中撤出,则会给他们带来麻烦。

作为一项规则,如果您推送了提交而不是重写历史记录,您应该这样做git revert <sha>这将创建一个新的提交,以逆转所提供的 sha 的更改。这不会从历史中抹去问题,但会造成最少的麻烦。

于 2013-05-23T13:12:24.250 回答