【问题标题】:How to have Git show a file's version history如何让 Git 显示文件的版本历史
【发布时间】:2011-07-10 04:58:38
【问题描述】:

我过去是 CVS 用户,虽然我认为 Git 是一个很好的版本控制系统,但我缺少 CVS 中的一个功能。具体来说,我想查看文件的版本历史记录,例如文件上的标签。我如何在 Git 中做到这一点?

【问题讨论】:

    标签: git file tags version history


    【解决方案1】:

    我使用的是 git 版本 2.23.0,如果您不使用其他选项或修订范围,则不需要使用“--”来显示文件的历史记录。只需使用:

    git log filename
    

    【讨论】:

      【解决方案2】:

      Rafe Kettler's answer 为您提供所需的基础知识,但值得进一步扩展。首先,如果您的文件与分支同名,则应在文件名前添加--

      git log -p -- filename
      

      -p 参数表示还显示该提交引入的对该文件的更改。您提到您希望查看适用于该版本的任何标签 - 为此您应该添加 --decorate 选项。

      最后,如果该文件可能在其历史记录中的某个时间点被重命名,或者从存储库中的另一个位置复制到某个位置,您应该考虑添加--follow 选项。

      您可以在 documentation 中找到有关 git log 的更多信息,或在其他 Stack Overflow 问题中查看特定文件历史记录的其他方法:

      ... 它还建议可以指定特定路径的图形历史浏览器(例如 gitk)。

      【讨论】:

        【解决方案3】:

        在 git 文件中没有自己的历史记录。该项目作为一个整体是有历史的。因此,您唯一可以要求的是与文件相关的历史部分,或者更确切地说(因为没有文件身份的特殊概念)与路径相关。所有显示命令的历史记录都接受路径限制器。喜欢:

        $ git log -- file
        $ gitk HEAD -- file
        

        -- 将修订与路径分开。在大多数情况下,您可以省略它,但如果名称也是有效的修订名称或当前版本中不存在该文件,则可能需要它。

        您也可以指定目录名称,在这种情况下,会列出该子树中所有文件的历史记录。

        由于受到路径的限制,如果文件被重命名,它将不会跟随。毕竟,git 不存储任何关于重命名的显式信息。但是它可以猜测重命名,您可以要求 log 尝试使用 --follow 跟随重命名,例如:

        $ git log --follow -- file
        

        这仅适用于单个文件,不适用于目录。

        另一个选项是查找包含特定文本的更改,如果您正在查找某些代码的来源,这通常是更容易的选择。使用-S 选项记录如下:

        $ git log -Stext
        

        【讨论】:

          【解决方案4】:

          试穿一下尺寸:

          git log -p filename
          

          在终端上阅读有点困难,因此您可能需要将其重定向到文件并在那里查看。

          【讨论】:

          • 谢谢。它显示了提交历史的历史。任何方法都可以显示标签上的信息?提交信息太长了,而且大多数版本彼此不同。
          • 什么是难读的?与所有 git 命令一样,如果它被定向到终端,它会将自身重定向到 less。当然,寻呼机是可配置的。
          • @Jan 如果在编辑器中查看会更容易阅读,该编辑器会突出显示差异的不同部分。
          • @Rafe git config --global color.ui auto
          • @wintige 两个标签之间单个文件的差异示例:git diff 1.6.0..1.6.5 -- Makefile.am
          猜你喜欢
          • 2021-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-01
          • 2021-12-07
          • 1970-01-01
          相关资源
          最近更新 更多