从 git diff 中找出更改的行号
Find out changed line numbers from git diff
我需要知道两次提交 (HEAD~1 and HEAD
) 到 repo
之间更改的行号
git diff HEAD~1 HEAD
returns 令人困惑的差异格式信息
我能够通过在 git diff 中查看它们的标记来识别新添加的文件或删除的文件(即 --- /dev/null
和 +++/dev/null
表示添加、删除)
是否可以识别修改文件中的行号
需要我的是
path/to/file/MyClass1.java
23-56
59-60
72-74
path/to/file/MyClass2.java
1-34
54-56
23-56、72-74 和 59-60 是在 HEAD~1 和 HEAD
之间更改的 line/range 行(表示为行号)
PS:我在其他 SO 问题上发现的一些线索似乎已经过时
任何帮助将不胜感激!
这应该给出两个修订版 HEAD~1
和 HEAD
之间修改文件的差异
git diff --unified=0 --diff-filter=M HEAD~1 HEAD
使用grep
实用程序,可以从输出中删除修改后的行和索引
git diff --unified=0 --diff-filter=M HEAD~1 HEAD | grep -v -e '^[+-]' -e '^index'
输出:
diff --git a/some/file b/some/file
@@ -startline1,count1 +startline2,count2 @@
...
在使用 sed
实用程序进行进一步处理时,最终命令是:
git diff --unified=0 --diff-filter=M HEAD~1 HEAD | \
grep -v -e '^[+-]' -e '^index' | \
sed 's/diff --git a.* b\//\//g; s/.*@@\(.*\)@@.*//g; s/^ -//g; s/,[0-9]*//g; s/\(^[0-9]*\) +/-/g;'
输出应该是这样的
/some/file1
startline1-startline2
/some/file2
startline3-startline4
...
我需要知道两次提交 (HEAD~1 and HEAD
) 到 repo
git diff HEAD~1 HEAD
returns 令人困惑的差异格式信息
我能够通过在 git diff 中查看它们的标记来识别新添加的文件或删除的文件(即 --- /dev/null
和 +++/dev/null
表示添加、删除)
是否可以识别修改文件中的行号
需要我的是
path/to/file/MyClass1.java
23-56
59-60
72-74
path/to/file/MyClass2.java
1-34
54-56
23-56、72-74 和 59-60 是在 HEAD~1 和 HEAD
之间更改的 line/range 行(表示为行号)PS:我在其他 SO 问题上发现的一些线索似乎已经过时 任何帮助将不胜感激!
这应该给出两个修订版 HEAD~1
和 HEAD
git diff --unified=0 --diff-filter=M HEAD~1 HEAD
使用grep
实用程序,可以从输出中删除修改后的行和索引
git diff --unified=0 --diff-filter=M HEAD~1 HEAD | grep -v -e '^[+-]' -e '^index'
输出:
diff --git a/some/file b/some/file
@@ -startline1,count1 +startline2,count2 @@
...
在使用 sed
实用程序进行进一步处理时,最终命令是:
git diff --unified=0 --diff-filter=M HEAD~1 HEAD | \
grep -v -e '^[+-]' -e '^index' | \
sed 's/diff --git a.* b\//\//g; s/.*@@\(.*\)@@.*//g; s/^ -//g; s/,[0-9]*//g; s/\(^[0-9]*\) +/-/g;'
输出应该是这样的
/some/file1
startline1-startline2
/some/file2
startline3-startline4
...