2

我使用以下命令来确定在 2 次提交之间修改的行数。b26e.. 和 e1f5... 是提交哈希

git difftool -y -x "diff -c" b26ea5c511970d0211186c3b1e119224465ad365 e2f5104a2dd1afdc27803ead58b74cfd18ae50be

下面是文件的输出

*** /tmp/n90Z9a_Testing.txt 2016-12-02 11:47:59.027168926 +0530
--- /tmp/19ymab_Testing.txt 2016-12-02 11:47:59.027168926 +0530
***************
*** 1,3 ****
  initial commit
  added new line
! added for modification
--- 1,5 ----
  initial commit
  added new line
! added for modification, this is modified.This is modified again
! after modifiying for the second time, this line is added
! This line added for complete deletion and then replace with another

从此我只需要过滤掉从第一次提交中修改过的行,简单来说我只需要从上面的输出中过滤这部分

*** /tmp/n90Z9a_Testing.txt 2016-12-02 11:47:59.027168926 +0530
--- /tmp/19ymab_Testing.txt 2016-12-02 11:47:59.027168926 +0530
***************
*** 1,3 ****
  initial commit
  added new line
! added for modification

我怎样才能过滤掉它,提前谢谢

4

2 回答 2

1

如果这只是选择两个标记之间的线,您可以使用sed

sed -n -e "/^\*\*\*/,/^---/{ /^---/d; p; }"

那是:

git difftool -y -x "diff -c" <shaX> <shaY> | sed -n -e "/^\*\*\*/,/^---/{ /^---/d; p; }"

这将打印“ ***”(包括)和“ ---”(不包括)之间的所有内容

于 2016-12-05T20:56:52.467 回答
1

试试这个

git difftool -y -x "diff -c" <commitHash1> <commithash2> | awk '/\*\*\*/{flag=1}/---/{print;flag=0}flag'

要查看在 2 个标记模式之间选择线条的更多示例,awk请参阅

于 2016-12-06T12:21:59.547 回答