git diff - 在移动的文件上运行?

时间:2012-11-26 13:23:31

标签: git git-diff mv

此问题与以下问题相同: How to do a git diff on moved/renamed file? 但有一个重要的区别,我希望看到上一次提交中的文件版本与当前暂存的版本之间的变化。

git diff --staged显示整个文件被删除:

--- a/old_path/main.cpp
+++ /dev/null
@@ -0,0 +1,42 @@
- line 1
- line 2
- line 3
- etc.

并将整个文件添加到另一个文件中:

--- /dev/null
+++ b/new_path/main.cpp
@@ -0,0 +1,42 @@
+ line 1
+ line 2
+ line 2.5
+ line 3
+ etc.

没有任何方便的方法来比较两者之间的实际差异。

2 个答案:

答案 0 :(得分:3)

如果您查看过去的提交,答案会有所不同,但使用git diff --staged表示您正在寻找old_path/main.cppHEAD与您当前之间的差异暂存new_path/main.cpp,它来自旧文件。在这种情况下,该命令应该有效,假设new_path/main.cpp自上演以来没有新的更改:

git diff HEAD:old_path/main.cpp new_path/main.cpp

new_path/main.cpp还包含尚未暂存的其他更改的情况下,不确定如何准确指定第二条路径的索引中的版本...

编辑:在gitrevisions(7)中稍微阅读后,看起来应该处理后一种情况:

git diff HEAD:old_path/main.cpp :new_path/main.cpp

注意:没有修订前缀,应该指定索引中的版本。

答案 1 :(得分:1)

由于我不知道上述问题的答案,我通常使用一种迂回的方式:只要方便,特别是每当我记得时,我都会在单独的提交中进行文件移动更改。因此,一旦提交了移动,我就可以继续处理该文件并且可以执行正常的git diff - 以“正常”方式执行,为下一次提交做准备。这是我所知道的最简单的方法......问题是,有时我会忘记这样做......

相关问题