我的项目历史如下所示:
- 编辑文件 a, b
- 提交,rev1
- 重命名文件 a, b -> c, d
- 提交,rev2
- 编辑文件 c, d
- 提交,rev3
我想查看我在这些提交中对两个文件所做的编辑的差异,但这git diff rev0..rev3
没有帮助,因为我只看到文件 a 和 b 的删除,以及对 c 和 d 的所有编辑作为一个大添加与文件的创建混在一起。
如何查看包含 rev1 和 rev3 的差异,其中 ((a,c), (b,d)) 被视为相同的文件,而差异中没有文件重命名混乱?
我的项目历史如下所示:
我想查看我在这些提交中对两个文件所做的编辑的差异,但这git diff rev0..rev3
没有帮助,因为我只看到文件 a 和 b 的删除,以及对 c 和 d 的所有编辑作为一个大添加与文件的创建混在一起。
如何查看包含 rev1 和 rev3 的差异,其中 ((a,c), (b,d)) 被视为相同的文件,而差异中没有文件重命名混乱?
使用git diff -M
.
它还可以进行微调 -git diff -M90%
检测 90% 相似的文件。(不确定git status
默认情况下使用什么)
git diff -C
将在重命名之间进行区分,并且还会检测副本。
正如上面的答案中提到的
git diff -M
检测只是重命名。
git diff
将接受类型的参数<rev>:<filename
。用于git log --follow <file>
查找您想要的版本以及该版本的文件名称。例如(在我的代码上,它过去被转换为 C++)
git diff 44308:./draw.c draw.cpp
对你来说可能是
git diff rev1:./a c
我发现我需要指定文件的路径,否则 git 本身给了我一个提示。