【问题标题】:Why can't I use git log --follow with --full-diff?为什么我不能将 git log --follow 与 --full-diff 一起使用?
【发布时间】:2015-10-28 00:01:02
【问题描述】:

git log --follow <myfile> 显示一个文件的git log

我想查看此日志以及此文件中的所有更改(差异)。我试试:

git log --full-diff --follow <myfile>

但这失败了:

fatal: --follow requires exactly one pathspec

为什么?我怎样才能得到我想要的差异?

或者,它是 git 中的一个错误吗?

【问题讨论】:

    标签: git git-diff git-log


    【解决方案1】:

    你可以这样得到:

    git diff <file_path_relative_to_project_root>
    

    已编辑:

    说明: 花了一段时间才明白这一点。每当 git log -p &lt;file&gt; 用于显示文件被触及的地方的提交,并仅针对同一文件进行差异化。这意味着如果您想跟踪文件的完整历史记录,您可以添加 --follow 选项并查看完整历史记录。

    但是当你输入这个命令时: git log --full-diff -p file ,它向您显示了该文件被触及的所有提交,而且现在它不仅显示指定文件的差异,还显示提交中触及的所有文件的差异。这意味着它会为您提供多个文件的结果。

    如果你尝试这个命令:git log help 你会看到 --follow 选项只能用于单个文件,所以 你可以有这样的命令: git log --follow -p file 因为它只显示单个文件的结果。

    但它不能与以下命令一起使用: git log --full-diff --follow -p file 因为它显示了多个文件的结果,这个查询会导致错误。

    【讨论】:

    • 没有。 Git diff 只能显示文件的两种状态之间的变化(默认情况下:来自 repo HEAD 的文件和来自磁盘的文件),但不能显示完整的历史记录。
    • 你会找到你的答案heregit log --follow -p --file
    • 谢谢,这行得通!所以你回答了我的第二个问题:) “为什么”的解释怎么样?
    • 请在上面找到答案,我已经编辑了为什么部分。如果您有任何疑问,请告诉我。
    【解决方案2】:

    TL;DR 版本的 Sahil 的回答:

    在 git log 中,--full-diff 不适用于 --follow,因为 "full" means "show all changed files"--follow 仅适用于一个文件。

    解决方案:使用git log --follow -p &lt;file&gt;

    【讨论】:

      猜你喜欢
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 2013-07-02
      • 2015-11-08
      • 2013-08-24
      • 2023-04-04
      • 2011-07-12
      相关资源
      最近更新 更多