これは大きな問題ではなく、可能かどうかを知りたいだけです。
abcd123
とwxyz789
の2つのコミットがあるとします。これらは、リポジトリの歴史のはるか昔に、隣接していない別々の場所で発生します。今、それらを元に戻したいとしましょう。やること
git revert abcd123 wxyz789
abcd123
を元に戻すコミットとwxyz789
を元に戻すコミットの2つの別個のコミットになります。
これで問題はありませんが、2つのコミットで修正したい間違いが論理的にリンクされていて、自己文書化の目的で、単一の「I何かを壊したので、今はファイルx、y、zを元に戻しています "コメント?これを行うgitコマンドはありますか?
(もちろん、すべての変更を手動で修正してからプッシュするだけでコミットを作成できることは承知しています。これはすべての疑わしい理由で苦痛です。)
できるよ:
git revert abcd123
git revert --no-commit wxyz789
git commit --amend
...そして、両方のコミットを取り消すことの複合効果を説明する適切なコミットメッセージを記述します。
互いに変更する複雑な復帰の場合、revert --no-commit
に問題がある可能性があります。
私の簡単な解決策は、実際に元に戻すことでした。
git revert <all commits>
git rebase -i
そして、最初のコミットを除くすべてのリバートをsquash
としてマークして、単一のコミットを作成します。
git revert -n <commits>
git commit
最初のコマンドは、コミットを作成せずにすべての取り消しを行い、最終結果をステージングします(-nオプション)。その後、commitコマンドは単一のコミットを作成します。