2

在两个测试提交中,第一个只有 operation git mv file moved_file,第二个只有,在提交之前mv moved_file moved_again_file && git add -A moved_file moved_again_file都显示为重命名,但它们显示为新文件和已删除文件。git statusgit commit --verbose

我期望git diff-tree HEAD在每次提交后显示一个R(重命名)状态,但我不断得到两个: anA和 a D

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

Git 是 1.8.3.1 版本,如果这有什么不同的话。

4

1 回答 1

4

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

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

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

于 2017-07-18T01:11:42.640 回答