Git在从快照计算变更集时,并不总是正确选择大块边界。git diff
具有允许在这方面进行一些调整的--diff-algorithm
选项;CCD_ 3有时比单独的CCD_ 4给出更好的结果。
有没有一种方法可以为git add -p
(基本上以交互方式显示diff
大块)获得相同的优化变更集布局?它似乎不允许使用--diff-algorithm
选项。
TL;DR版本
git -c diff.algorithm=minimal add -p
(需要Git 1.8.4或更新版本)。
详细信息
在最后一点研究之后,将此从评论转移到答案:
自Git1.8.4版本以来,交互式add-perl脚本(实现git add -p
)遵循Git配置中的diff.algorithm
设置。这是John Keeping(johnkeeping
)提交的2cc0f53(2013年6月12日)
(由Junio C Hamano合并——gitster
——提交91fc1592013年6月27日):
当以交互方式暂存大块时,有时使用另一种diff算法,将更改拆分为块逻辑方式。这是不可能的,因为卫浴命令由add调用--interactive忽略"diff.algorithm"配置选项(正如他们应该做的那样)。
既然add-interactive是一个瓷器命令,它应该尊重这一点配置变量。要做到这一点,请使其读起来不同。算法和将其值传递给底层的diff索引和diff文件调用。
此时,不要将选项添加到"git add"、"git reset"或"gitcheckout"(所有这些都可以调用gitadd——interactive)想要覆盖他们可以使用的命令行上的值:
git -c diff.algorithm=$ALGO ...
(Junio C Hamano(gitster
)在提交e5c2099(2013年6月23日)中进行了修复;修复也在1.8.4中)。