为什么git diff-tree show总是显示重命名为添加和删除

时间:2017-07-18 00:53:23

标签: git git-diff git-diff-tree

在两个测试提交中,其中第一个只有操作git mv file moved_file,第二个只有mv moved_file moved_again_file && git add -A moved_file moved_again_file,在提交前都显示为git status中的重命名,但是在{{1}中它们显示为新文件和删除文件。

我希望在每次提交后git commit --verbose显示一个git diff-tree HEAD(重命名)状态,但我会继续获得两个:RA

我正在尝试编写一个脚本,该脚本将根据文件状态执行操作,但如果它们始终显示为添加/删除,则无法正确规划D(或R)状态

Git是版本1.8.3.1,如果这有所不同。

1 个答案:

答案 0 :(得分:3)

git diff-tree命令是 plumbing 命令,而不是瓷器命令,因此它具有可预测的行为。

其中之一是重命名检测 off,除非明确打开。与此对比,例如,git diff,这是瓷器命令,因此根据您diff.renames的个人配置设置重命名检测。

要启用重命名检测,请添加-M--find-renames(及其可选阈值)。使用-C--find-copies(及其可选阈值)查找副本;如果需要,请添加--find-copies-harder