我听说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仅仅是输出,不会被存储。 –