変更を元に戻すには、基本的に次の 2 つのオプションがあります。
- 逆の変更を適用する新しいコミットを作成します。これは、パブリック リポジトリの履歴を変更しないため、推奨されるオプションです。
- コミットを削除し、それらを強制的にプッシュします。
最初のオプションは、次を使用して実現できますgit revert
git-revert - 既存のコミットを元に戻す
1 つまたは複数の既存のコミットがある場合、関連するパッチによって導入された変更を元に戻し、それらを記録するいくつかの新しいコミットを記録します。
例は次のようになりますgit revert -n HEAD~5..HEAD
。このコマンドは 5 つの新しいコミットを作成し、それぞれが現在チェックアウトされているブランチの最後の 5 つのコミットの 1 つを取り消します。
2 番目のオプションは、実際にコミットを削除することです。これにより、リポジトリ内の履歴が変更されることに注意してください。そのため、すでに変更を行っている人はおそらくかなり驚かれることでしょう。そうは言っても、あなたはできる
git reset --hard HEAD~5
git push --force
最初のコマンドは、現在の作業コピー内のコミットされていない変更を消去します。ローカル リポジトリを現在の HEAD - 5 コミットの状態にリセットします。2 番目のコマンドは、デフォルトのリモート (つまり GitHub) に強制的にプッシュします。現在のローカル リポジトリから分岐した変更はすべて上書きされます。
もう一度警告します。何をしているのかよくわからない場合は、このオプションを使用しないでください。正しく行わないと、自分や他の人のデータが失われる可能性があります。変更を透過的に削除しますが、履歴書き換えの厄介な副作用がないため、代わりに最初のオプションを使用してください。