73

これは大きな問題ではなく、可能かどうかを知りたいだけです。

レポの歴史のはるか昔に、隣接していない別々の場所で発生する2つのコミットがあるabcd123としましょう。wxyz789ここで、それらを元に戻したいとしましょう。やってる

git revert abcd123 wxyz789

abcd1231つは元に戻し、もう1つは元に戻すという2つの別々のコミットが発生しwxyz789ます。

これはすべて問題ありませんが、2つのコミットで修正したい間違いが論理的にリンクされていて、自己文書化の目的で、1つのシングルを含む1つのコミットを作成したい場合はどうなりますか?ファイルx、y、z "コメントを元に戻していますか?これを行うgitコマンドはありますか?

(もちろん、すべての変更を手動で修正してからプッシュするだけでコミットを作成できることは承知しています。これは、すべての明白な理由で苦痛です。)

4

3 に答える 3

90

できるよ:

git revert abcd123
git revert --no-commit wxyz789
git commit --amend

...次に、両方のコミットを元に戻すことの複合効果を説明する適切なコミットメッセージを記述します。

于 2012-05-02T14:25:07.403 に答える
43

互いに変化する複雑な復帰の場合、revert --no-commit問題が発生する可能性があります。

私の簡単な解決策は、実際の復帰とスカッシュを行うことでした。

git revert <all commits>
git rebase -i

次に、最初の復帰を除くすべての復帰をとしてマークしてsquash、単一のコミットを作成します。

于 2013-10-23T08:47:12.900 に答える
24
git revert -n <commits>
git commit

最初のコマンドは、コミットを作成せずにすべての復帰を実行し、最終結果をステージングします(-nオプション)。その後、commitコマンドは単一のコミットを作成します。

于 2015-12-08T02:08:20.920 に答える