从git diff中找出更改的行号

问题描述 投票:0回答:1

我需要知道两个提交之间改变的行号(HEAD~1 and HEAD)到回购

git diff HEAD~1 HEAD

以混乱的差异格式返回信息

我能够通过查看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之间改变的行数(用行号表示)。

PS:我在其他SO的问题上找到的一些线索似乎已经过时了。

git git-diff line-numbers
1个回答
3
投票

这应该会给出两个版本之间修改过的文件的差值。HEAD~1HEAD

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 实用程序,最后一条命令是.NET,输出应该是这样的。

git diff --unified=0 --diff-filter=M HEAD~1 HEAD | \
grep -v -e '^[+-]' -e '^index' | \
sed 's/diff --git a.* b\//\//g; s/.*@@\(.*\)@@.*/\1/g; s/^ -//g; s/,[0-9]*//g; s/\(^[0-9]*\) +/\1-/g;'

输出应该是这样的

/some/file1
startline1-startline2
/some/file2
startline3-startline4
...
© www.soinside.com 2019 - 2024. All rights reserved.