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 のようになります。ただし、コミットされているものはすべてbc私が望んでいない完全にゴミです。

リモートリポジトリをどのように作成できますa-d-eか? (ブランチ 2 に分岐する前にプッシュを行ったので、リモートのマスターは既に持っていa-b-cます) 本当にレポを台無しにしたくないのですgit push origin master --forceが、良い選択肢でしょうか?

編集:グーグルの後、この質問は読む価値があることgit revertがわかりました

4

1 に答える 1

1

git push origin master --force意図したとおりに履歴を書き換えます。ただし、他の開発者がレポからプルしている場合、問題が発生します。

原則として、履歴を書き換えるのではなくコミットをプッシュした場合は、git revert <sha>これを行う必要があります。これにより、提供されたshaの変更を元に戻す新しいコミットが作成されます。これにより、履歴から問題が消去されるわけではありませんが、発生するトラブルは最小限に抑えられます。

于 2013-05-23T13:12:24.250 に答える