从Git 2.15, git show
now supports开始,使用--color-moved
选项检测移动的行。它适用于跨文件移动。
有没有办法配置git默认应用--color-moved
选项?
答案 0 :(得分:1)
应检查zip -r zipfilename.zip *
的文档。运行下一个命令以着色移动的代码:
git diff
答案 1 :(得分:0)
注意:在Git 2.19(2018年第三季度)中,“ git diff --color-moved
”功能得到了进一步调整。
请参见commit 626c0b5,commit ca1f4ae(2018年7月18日)和commit e2fe6ab,commit b309571,commit 51da15e,commit ee1df66,{{3} },commit 3783aad,commit 74cfa7b,commit 21c770b(2018年7月16日)由commit 25790be。
(由Stefan Beller (stefanbeller
)在Junio C Hamano -- gitster
--中合并,2018年8月2日)
首先,新的默认选项是块,而不是斑马
diff.c
:添加用于移动代码检测的阻止模式新的“
blocks
”模式在平原和斑马之间提供了中间地带。
它和普通字体一样直观(很少有颜色),但是仍然要求最少的行/字符才能将移动的块计数。
因此,使用commit a81575a设置时请记住这一点。
默认模式(请参阅git config --global diff.colorMoved default
)将是块状,不再是斑马线。
然后,空格管理附带了一个块:
diff.c
:添加空白模式以移动检测以允许缩进更改事实证明,
--color-moved
的选项非常有用。 邮件列表。但是,当重构时,缩进有时会改变, 例如,将功能划分为较小的辅助功能时 该代码通常会四处移动,除了减少缩进。仅查看移动的代码而忽略缩进的更改,这是一种模式 忽略上一个补丁中实现的移动检测中的空格 足够了。但是,整个移动着色是出于提交的动机
git diff
modes(差异:颜色以不同的方式移动线,2017-06-30,Git v2.15.0),带来了 复习者能够信任“阻止”动作的想法。由于存在诸如python之类的语言,它们依赖于适当的相对语言 程序控制流的缩进,忽略任何空格 一次大的更改不会遵守2e2d5ac的承诺,即 审稿人较少关注块的内部,例如内部 审稿人希望承担相同的程序流程。
这种空白空间无知的新模式将考虑到这一点,并将 每个块中每行只允许相同的空格更改。这个补丁 甚至只允许在行的开头进行相同的更改。
因为这是空白模式,所以它被其他空白独占 移动检测中的各种模式。
此补丁带来了一些与块检测有关的挑战。
我们需要一个宽广的网络来捕捉可能移动的线,但随后需要 缩小范围以检查块是否仍然完整。考虑一下 示例(忽略块大小):
- A
- B
- C
+ A
+ B
+ C
在块的开头,检查是否有对应的 对于
A
,我们必须忽略所有空间更改。但是在下面 行,我们必须检查缩进更改是否保持不变。通过计算来检查缩进更改是否保持不变 压痕因线长的差异而变化,然后假设 更改仅在较长的行的开头,共同的尾巴 是一样的这就是测试包含以下行的原因:
- <TAB> A
...
+ A <TAB>
...
使用比较函数捕获开始于块的第一行 忽略空白,与块的其余部分不同,空白处 比较时要考虑到增量,我们也必须考虑 以下情况:
- A
- B
- A
- B
+ A
+ B
+ A
+ B
在检查前
A
行(在+
和-
行中)是否为 一个块,我们必须检查所有“A
”并记录所有空白增量 这样我们可以发现上面的示例只是一个块 缩进。
并且再次在Git 2.21(2019年第一季度)中对其进行了调整
请参见2e2d5ac,commit 0cd51e9,commit 21536d0,commit 7a4252c,commit b0a2ba4,commit 2034b47,commit 10acc5f,{{3} },commit b73bcba(2018年11月23日)通过commit 748aa1a。
(由commit fbafb7c在Phillip Wood (phillipwood
)中合并,2019年1月29日)
即使您将此设置为默认设置,也可以使用--no-color-moved
关闭移动检测。
这可用于覆盖配置设置。 与--color-moved=no
相同。
并且:
diff --color-moved-ws
:处理空白行使用
--color-moved-ws=allow-indentation-change
时,允许具有相同缩进更改的行跨空白行分组。
目前,这仅适用于空白行也已移动的情况,不适用于 刚刚更改了缩进的块。这完成了对
--color-moved=allow-indentation-change
实现的更改。
正在运行:git diff --color-moved=allow-indentation-change v2.18.0 v2.19.0
现在需要5.0秒。
对于以前的实现的优化版本,这比8.5s节省了41%,比原来的14.6s节省了66%。