我想在文件中显示一行的更改日志。问题是命令 git log {commitHash} -p -1 -L 17,+ 1:{filePath} 为我提供了{commitHash}之后第17行的历史。我想要的是以前的17行的变更日志。
我看了看文件,发现提交后第17行现在是20-22行。所以我尝试了 git log {commitHash} -p -1 -L 20,+ 3:{filePath} :
commit {commitHash}
Author: {author}
Date: {date}
{commitMessage}
diff --git a/{filePath} b/{filePath}
--- a/{filePath}
+++ b/{filePath}
@@ -17,1 +20,3 @@
- <button type="button" class="btn btn-info" tooltip="someTooltip" placement="bottom" disabled>
+ <button type="button" class="btn btn-info"
+ tooltip="someTooltip"
+ placement="bottom" disabled>
我基本上想要的命令是我提供第17 + 1行,但是得到 git log {commitHash} -p -1 -L 20,+ 3:{filePath} 的结果命令。
答案 0 :(得分:1)
您似乎希望基于基准行号从git diff
输出中获取块。
这是可以做到的丑陋的Perl。
git diff -U0 d462a1f6 e627666c | perl -e 'while(my $line = <>){ if($line =~ /^@@ -14/) { while($line = <>) { if($line =~ /^@@/) {exit} print $line} } }'
在Windows上使用git bash对我来说可以正常工作。
您当然希望将示例中的“ 14”替换为所需的行号。
您还可以过滤输出,以仅显示添加的行,并且会有一些细微的变化,例如
print $line if $line =~/\+/