我聽說git管理文件的差異,而不是整個文件,以使存儲庫更小。 git diff
顯示了提交的行添加和刪除操作(甚至是多次提交)。另外,git可以應用*.patch
文件。更改提交行的順序
但是在這裏:如何重新排序提交差異的改變行?例如,假設我改變了文件
a = new A() {
@Override
method1() {
do_something();
}
};
b = new B() {
@Override
method2() {
do_whatever();
}
};
c = new C() {
@Override
method3() {
do_nothing();
}
};
到
c = new C() {
@Override
method3() {
do_nothing();
}
};
b = new B() {
@Override
method2() {
do_whatever();
}
};
a = new A() {
@Override
method1() {
do_something();
}
};
這是剛剛重新排序3個分配。
對於此提交,git diff
顯示
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();
}
};
因爲@Override
關鍵字不適當地移動這是不合乎邏輯的。
我想要得到的東西,如:
-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僅僅是輸出,不會被存儲。 –