HOWTO · Git
Git リポジトリを以前のコミットに戻す
この記事では、Git リポジトリを以前のコミットに戻すさまざまな方法について説明します。
このページの内容
この記事では、git リポジトリを以前のコミットにロールバックするさまざまな方法について説明します。 Git を使用すると、ほとんどすべてを元に戻すことができます。
ローカル リポジトリとリモート リポジトリの両方と、未公開および公開済みのコミットを元に戻す方法を調べます。
未公開のコミットを削除して Git リポジトリを以前のコミットに戻す
未公開のコミットは、まだリモート リポジトリにプッシュされていないローカル リポジトリ内のコミットです。 この概念を説明するために例を使用します。
例 1:
以下は、ローカル リポジトリのコミット履歴です。 各コミット メッセージに与えられた組み合わせに注意してください。
何らかの理由で、最新のコミットにエラーがあることが判明した場合は、そのコミットを削除して、リポジトリを以前の状態に戻すことができます。
私たちの場合、悪いコミットは ba4c699 (更新名) のはずです。 git rest --hard <sha1-commit-hash> コマンドを実行して、このコミットを削除します。
git reset --hard 00e1a53
出力:
HEAD is now at 00e1a53 Merge branch 'main' of https://github.com/Wachira11ke/Delftscopetech
上記のコマンドは、リポジトリを指定されたコミットに戻し、その後のコミットを削除します。 このコマンドは、リポジトリ内のコミットされていないすべての変更も削除します。
それらを保持し、削除後に適用する場合は、以下のコマンドを実行します。
git stash
git reset --hard 00e1a53
git stash pop
この組み合わせにより、コミットされていない変更が保存され、新しいワークスペースに適用されます。 ファイルに変更を加えた場合、マージ エラーが発生する場合があります。
公開されたコミットを削除して、Git リポジトリを以前のコミットに戻す
パブリッシュされたコミットは、リモート リポジトリに適用された変更です。 ローカル リポジトリからリモート リポジトリに不適切な変更をプッシュした場合、リポジトリを以前のバージョンに戻すことができます。
リポジトリから取得しないように他の開発者に警告する価値があります。 例を見てみましょう。
例 2:
以前、ローカル リポジトリでコミットを削除する方法について説明しました。 削除したコミットをすでにリモート リポジトリにプッシュしているとします。
次のコンテキストでは、git push コマンドを使用してリモート リポジトリを元に戻すことができます。
git push --force origin HEAD
上記のコマンドは、ローカル リポジトリの状態に基づいてリモート リポジトリを上書きします。 他の開発者が行った変更はすべて破棄されます。
より安全なオプションは次のとおりです。
git push --force-with-lease oriin HEAD
以下のコマンドを使用してブランチを指定できます。
git push -f origin <sha1-commit-hash>:branch_name
一部のリモート リポジトリには、上記のコマンドを拒否する receive.denyNonFastForwards プリセットがあります。 このような場合、ブランチを削除して再作成する必要があります。
git push origin : <branch name>
git push origin <sha1-commit-hash>:ref/heads/<branch name>