gitはリポジトリを小さくするために、ファイル全体ではなくファイルの違いを管理していると聞きました。 git diff
は、コミット(または複数のコミット)の行の追加と削除を示します。また、gitは*.patch
ファイルを適用できます。コミットの変更された行の順番を変更
しかし、ここで:コミットの違いの変更された行をどのように並べ替えることができますか?例えば、私はちょうど3つの割り当てを並べ替えている
c = new C() {
@Override
method3() {
do_nothing();
}
};
b = new B() {
@Override
method2() {
do_whatever();
}
};
a = new A() {
@Override
method1() {
do_something();
}
};
にファイル
a = new A() {
@Override
method1() {
do_something();
}
};
b = new B() {
@Override
method2() {
do_whatever();
}
};
c = new C() {
@Override
method3() {
do_nothing();
}
};
を変更したとします。このため
コミット、git diff
は@Override
キーワードが適切に動かないので、論理的ではない
diff --git a/a b/a
index cd702e1..7baebbe 100644
--- a/a
+++ b/a
@@ -1,7 +1,7 @@
-a = new A() {
+c = new C() {
@Override
- method1() {
- do_something();
+ method3() {
+ do_nothing();
}
};
b = new B() {
@@ -10,9 +10,9 @@ b = new B() {
do_whatever();
}
};
-c = new C() {
+a = new A() {
@Override
- method3() {
- do_nothing();
+ method1() {
+ do_something();
}
};
を示しています。また、コミット私はパッチファイルを作り、それの行の順序を変更し、コミットとしてそれを適用するときに
-a = new A() {
- @Override
- method1() {
- do_something();
- }
-};
+c = new C() {
+ @Override
+ method3() {
+ do_nothing();
+ }
+};
b = new B() {
@Override
method2() {
do_whatever();
}
};
-c = new C() {
- @Override
- method3() {
- do_nothing();
- }
-};
+a = new A() {
+ @Override
+ method1() {
+ do_something();
+ }
+};
しかし、以前のものとgit diff
同じを持って(@Override
ない:
私のようなものを取得したいです移動した)。
複雑な改行を含むコミットの場合、デフォルトポリシーgit diff
は変更の意味を反映することができません。また、(これは意見ではあるが)行の変更が管理されていない場合でも、競合が発生する可能性がある。
がどのようにコミット
なぜそれが同じ行があることをだならばgitのでしょうか? – odradek
Git diffには "移動した行"の概念はなく、単にあなたが "これらを削除しました"と "あなたがこれらを追加しました"したがって、あなたのケースでは、周囲の線は変更されていないので、変更の一部とはみなされません。また、 "git diff"は単に違いを説明するためにgitがそれらのファイルのスナップショットを内部的に保存するので、diffは単純に出力され、保存されないことに注意してください。 –