以前、私はいくつかのコードをコミットしましたが、当時はそれは良い考えのように思えましたが、実際には事態はさらに悪化しました。それは役に立たないので、履歴から変更を削除し、すべてのコミットをリベースしたいと思います-それらはすべて問題なくマージする必要があります。
不正なコミット(gitxを使用)の直前に新しいブランチ(newMaster
と呼ばれる)を作成し、チェックアウトして実行してみました。
git rebase -i master
どのAFAICSが私にマスターのコミットのリストとそれらをマージするかマージしないかのオプションを与えたはずですが、代わりに何も言わず、newMasterをマスターと等しくなるように早送りしました。
私が必要とする最も簡単な方法は何ですか?
git rebase -i
は正しいコマンドですが、最新の変更をブランチから実行し、リベース操作の「ベース」であるリビジョン(不良コミットの直前のリビジョン)を渡します。したがって、ブランチを作成した場合はlast-good-commit
は、最後の適切なコミットを指します。master
で次のコマンドを実行することをお勧めします。
git rebase -i last-good-commit
あなたが望むことをする最も簡単な方法は、編集したいブランチにとどまる(または再チェックアウトする)ことで、このようなものを実行することです。
git rebase --onto <sha1-of-bad-commit>^ <sha1-of-bad-commit>
これにより、不良コミット以降のすべてが不良コミットの親にリベースされ、現在のブランチの履歴から不良コミットが効果的に削除されます。もちろん、競合が発生した場合は解決する必要があります。
rebase
を使用して、変更をリモートにプッシュすることができず、リベースはプルするたびにキャンセルされました。
私は、(最後のコミットではなく)正確なコミットを元に戻すことに成功しました:
git revert <sha-of-bad-commit>
そして、私はリモコンでプッシュすることもできました