リモート リポジトリにプロジェクトがあり、ローカル リポジトリ (開発) とサーバー リポジトリ (本番) と同期しています。コミット済みの変更をいくつか行い、リモートにプッシュしてサーバーからプルしました。ここで、それらの変更を元に戻したいです。git checkout
変更前のコミットを実行して新しい変更をコミットすることもできますが、リモートに再度プッシュすると問題が発生すると思います。どのように進めればよいか、何かアドバイスはありますか?
ベストアンサー1
個々のコミットを元に戻すには、次のようにします。
git revert <commit_hash>
これにより、指定したコミットの変更を元に戻す新しいコミットが作成されます。特定のコミットのみが元に戻され、それ以降のコミットは元に戻されないことに注意してください。コミットの範囲を元に戻したい場合は、次のようにします。
git revert <oldest_commit_hash>..<latest_commit_hash>
<oldest_commit_hash>
は、 までのコミットをすべて元に戻します<latest_commit_hash>
。git のバージョンによっては<oldest_commit_hash>
、 自体も元に戻すので、そのコミットが元に戻されているかどうかを再確認してください。 を使用すると、最新の元に戻すコミット (最も古いコミットを元に戻す) をいつでも削除できますg reset --hard HEAD~
。
コミットのハッシュを確認するには、 を使用できますgit log
。
見てくださいgit-revert マニュアルページコマンドの詳細についてはgit revert
、以下を参照してください。この答えコミットを元に戻す方法の詳細については、こちらをご覧ください。
元に戻したコミットを再適用する場合の追加注意事項:
通常、コミットを元に戻すのは、プッシュしたコミットに問題があることが判明したためです。その後、問題の修正を続ける前に、まずリポジトリを安定した状態に復元する必要があります。そのため、git revert
前述のように、まず を実行します。次に、それらの元に戻すコミットをプッシュして、リモートを安定させます。その後、元に戻したコミットをローカルに再適用して、ローカル リポジトリのファイルを元に戻す前の状態に戻します。その後、問題を修正できます。
元に戻したコミットを再適用するには、 revert commitsを元に戻す必要があります。 そのためには、revert commitsのコミット範囲を使用してコマンドを再度実行します。 そうすると、新しい revert commits によって、以前の revert commits が元に戻されます。 すると、ファイルは最初の revert 前の状態に戻ります。 その後、問題を修正し、修正を含む新しいコミットを作成して、新しいコミットをプッシュできます。git revert