【发布时间】:2018-11-01 08:30:36
【问题描述】:
我想查看与文件中特定行相关的提交历史记录。我知道我们可以获取文件的历史记录。是否有任何命令可用于仅对与某一特定行相关的提交进行排序?
【问题讨论】:
标签: git
我想查看与文件中特定行相关的提交历史记录。我知道我们可以获取文件的历史记录。是否有任何命令可用于仅对与某一特定行相关的提交进行排序?
【问题讨论】:
标签: git
此处的其他答案很好地涵盖了所提出的问题,但有时您希望在不先检查该分支的情况下查看另一个分支的历史记录。
git log branch-name -L '/regex/',+1:path/to/your/file.txt
在这些情况下效果很好。或者你已经知道行号:
git log branch-name -L15,+1:'path/to/your/file.txt'
【讨论】:
bomz 提供了正确的选项,但语法错误。固定线路如下所示:
git log -L '/the line from your file/,+1:path/to/your/file.txt'
-L 的参数的含义是“在path/to/your/file.txt 中找到第一个出现的正则表达式/the line from your file/ 并显示关于从该点开始的一个行范围的日志(意思是这一行,但你可以说+5 代替)”。
需要注意的是,如果该行包含正则表达式中具有特殊含义的字符,则需要对其进行转义。
但是,使用行号可能要简单得多,如下所示:
git log -L15,+1:'path/to/your/file.txt'
(对于文件 path/to/your/file.txt 的第 15 行)
在这两种情况下,+1 都可以替换为更大的数字以获得更多行,或者使用正则表达式来匹配所选范围的结尾。
来自the docs的详细描述:
-L <start>,<end>:<file> -L :<funcname>:<file>跟踪由“
, ”(或函数名正则表达式 )给出的行范围的演变 。您不得提供任何路径规范限制器。这是目前 仅限于从单个修订开始的步行,即,您只能 给出零个或一个积极的修订论点。你可以指定这个 选项不止一次。
和 可以采用以下形式之一:
号码
如果
或 是一个数字,它指定一个绝对行号 (行数从 1 开始)。 /正则表达式/
此表单将使用与给定 POSIX 正则表达式匹配的第一行。如果
是一个正则表达式,它将从前一个 -L 的末尾开始搜索 范围,如果有的话,否则从文件开始。如果 是 “^/regex/”,它将从文件的开头搜索。如果 是 正则表达式,它将从 给出的行开始搜索。 +偏移或-偏移
这仅对
给出的行之后有效,并且会在之前指定行数 或在 . 如果用“:
”代替 和 ,它是一个 表示从第一个 funcname 行开始的范围的正则表达式 匹配 ,直到下一个 funcname 行。 “:” 从前一个 -L 范围的末尾开始搜索,如果有的话,否则从 文件的开头。 “^: ” 从文件开头搜索。
【讨论】:
git log -L'15,+1:path/to/your/file.txt' 完全不使用引号似乎有效:git log -L 15,+1:path/to/your/file.txt
你可以使用 git log https://git-scm.com/docs/git-log
git log -L'the line from your file' -- path/to/your/file.txt
【讨论】:
git log -L 465,469:src/file.c