如何使用git diff针对指定提交显示特定行范围的差异
如何使用git diff针对指定提交显示特定行范围的差异
当然可以!Git其实自带了非常实用的参数来帮你限定diff的行范围,完美解决你不想看无关内容的需求。我平时整理代码变更文档时也常用这个技巧,给你两种靠谱的方法:
方法一:使用git diff的-L参数(推荐)
git diff的-L选项专门用来指定要对比的行范围,而且支持同时指定多个范围,完全符合你的需求。把你原来的命令改成下面这样就行:
git --no-pager diff -L 1,10:path/a.cpp -L 48,69:path/a.cpp 0847759b^ 0847759b
参数解释:
-L 1,10:path/a.cpp:表示只关注path/a.cpp文件中第1到10行的差异- 重复
-L参数就能添加多个行范围,比如这里的-L 48,69:path/a.cpp就是第二个范围 0847759b^是目标提交的父提交,0847759b是你要查看的提交,这样就能对比该提交前后的指定行变化
如果你习惯像原来那样直接指定两个版本的文件路径,也可以写成:
git --no-pager diff -L 1,10 -L 48,69 0847759b^:path/a.cpp 0847759b:path/a.cpp
这种写法省略了路径重复,效果是一样的。
方法二:结合git show和文本工具手动对比(备选)
如果某些场景下-L参数不太好用(比如旧版本Git不支持?不过现在大部分版本都支持了),你还可以分别提取两个版本中指定行的内容,再手动对比:
先提取父提交的指定行:
git show 0847759b^:path/a.cpp | sed -n '1,10p;48,69p'
再提取目标提交的指定行:
git show 0847759b:path/a.cpp | sed -n '1,10p;48,69p'
然后把两个输出放在一起对比就行,不过这种方法不如第一种直观,还是优先推荐-L参数的用法。
内容来源于stack exchange
相关产品推荐
相关产品推荐

