在两个测试提交中,其中第一个只有操作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
(重命名)状态,但我会继续获得两个:R
和A
。
我正在尝试编写一个脚本,该脚本将根据文件状态执行操作,但如果它们始终显示为添加/删除,则无法正确规划D
(或R
)状态
Git是版本1.8.3.1,如果这有所不同。
答案 0 :(得分:3)
git diff-tree
命令是 plumbing 命令,而不是瓷器命令,因此它具有可预测的行为。
其中之一是重命名检测 off,除非明确打开。与此对比,例如,git diff
,这是瓷器命令,因此根据您diff.renames
的个人配置设置重命名检测。
要启用重命名检测,请添加-M
或--find-renames
(及其可选阈值)。使用-C
或--find-copies
(及其可选阈值)查找副本;如果需要,请添加--find-copies-harder
。