【问题标题】:View git history of specific line查看特定行的 git 历史记录
【发布时间】:2018-11-01 08:30:36
【问题描述】:

我想查看与文件中特定行相关的提交历史记录。我知道我们可以获取文件的历史记录。是否有任何命令可用于仅对与某一特定行相关的提交进行排序?

【问题讨论】:

标签: git


【解决方案1】:

此处的其他答案很好地涵盖了所提出的问题,但有时您希望在不先检查该分支的情况下查看另一个分支的历史记录。

git log branch-name -L '/regex/',+1:path/to/your/file.txt

在这些情况下效果很好。或者你已经知道行号:

git log branch-name -L15,+1:'path/to/your/file.txt'

【讨论】:

    【解决方案2】:

    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 范围的末尾开始搜索,如果有的话,否则从 文件的开头。 “^:” 从文件开头搜索。

    【讨论】:

    • -L 后缺少配额:git log -L'15,+1:path/to/your/file.txt' 完全不使用引号似乎有效:git log -L 15,+1:path/to/your/file.txt
    • @JohannBzh 不错,已修复。在大多数情况下,引号是可选的,但对于带有空格或其他需要转义的字符的路径来说,引号是必需的 - 所以默认情况下只引用所有路径会更安全。
    • -L后面必须有一个空格
    • @Hemanth 这就是手册页的显示方式,但它实际上是双向的。这是一个字母选项的习惯做法,即接受令牌的其余部分作为输入(如果有的话)。我的意思是,至少它对我有用,如果它实际上在某些环境中不起作用,我很乐意纠正。
    【解决方案3】:

    你可以使用 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
    猜你喜欢
    • 2012-08-10
    • 2012-11-13
    • 1970-01-01
    • 2011-04-20
    • 2013-03-17
    • 2010-12-19
    • 2016-10-20
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多