4

私は最近git commit --fixup、あなたのコミットを以前のコミットのフィックスアップとしてマークし、インタラクティブなリベース中にそれらを自動的に並べて配置することについて学びました。

複数の行に対して自動的に個別に行うにはどうすればよいですか?

次の例を見てください。私のgit履歴は次のようになります。

c5069d5 This commit adds method a() to file A.cpp
ac5db87 This commit does something in file B.cpp
733e2ff This commit adds method b() to file A.cpp
ac5db87 This commit does something else in file B.cpp

そして、私の作業ツリーではa()、ファイル A.cpp のメソッドのいくつかの行を変更しb()ました (そしておそらくメソッドを追加しましたc())。コミュニケーションを容易にするために、ここでは関数についてのみ説明していることに注意してください。もちろん、git はプログラミング言語を認識していません。

作業ツリーの 2 つの個別の変更から、2 つの個別の修正コミットを自動的に生成することは可能ですか?

c5069d5 このコミットは、メソッド a() をファイル A.cpp
 a5559d5 修正に追加します! このコミットは、メソッド a() をファイル A.cpp に追加します
ac5db87 このコミットはファイル B.cpp で何かを行います
733e2ff このコミットはメソッド b() をファイル A.cpp に追加します
a53aad5 フィックスアップ!このコミットは、メソッド b() をファイル A.cpp に追加します
ac5db87 このコミットは、ファイル B.cpp で別のことを行います

(そして今、作業ツリーには追加された A.cpp の変更が含まれていますc()) これが作業ツリー内の複数のファイルで機能する場合は素晴らしいでしょう (この例のように単一の A.cpp だけではありません)。

更新、代替表現:

git-blame は、各行の最後のコミットを表示します。行を変更する場合は、コミット git-blame がこの行について以前に示したものを修正したいと思います。

4

1 に答える 1