在某个文件中,我需要从一个提交到另一个提示的确切行为修改后的行。如果我做git log
,它会指示我这样的东西,
10 10模块/p2-profile-gen/pom.xml 2 2 pom.xml
4 4 pom.xml
1 0模块/Distribution/pom.xml
1 1 pom.xml
1 1 pom.xml
10 8 pom.xml
29 28模块/p2-profile-gen/pom.xml 175 4 pom.xml
直到第二行
1 1 pom.xml
可以很容易地理解,但是从那时起,我们如何确定它们只是修改或删除。例如,
29 28模块/p2-profile-gen/pom.xml 175 4 pom.xml
我们如何知道哪个是正确的
- 29个新添加和28个单独的删除
- 28个修改和1个新添加
git log
是否有任何选项可以使用,还是有其他方法?预先感谢
git log
无法实现这一点,实现此目的的唯一方法是通过git diff
,但在其中,它也只能提供无线添加和删除未修改的线。这是因为git
在unified view
中提供diff
输出为context view
中的默认值。您可以从此处和上下文视图了解统一的视图。
因此,如果我们在上下文形式中获取git diff
的输出,则可以轻松地识别添加,删除和修改的行,因为加上添加的添加显示了" ",带有" - "的删除,并使用"!"进行了修改。为此,我们需要使用git difftool
,以下代码可以正常工作
git difftool -y -x "diff -c" <commit1> <commit2>
我认为您要寻找的是git diff
:
git diff --stat <old-commit> <new-commit> -- <filename>
例如。
$ git diff --stat a54873b a6addbd -- Foo.cpp
Foo.cpp | 42 +++++++++++++++++++++++++++++++++++-------
1 file changed, 35 insertions(+), 7 deletions(-)