git diff文件反对它的最后更改

是否有可能让git在特定文件之间产生差异,因为它现在存在,并且在最后一次提交改变它之前存在?

也就是说,如果我们知道:

$ git log --oneline myfile
123abc Fix some stuff
456def Frobble the foos
789dba Initial commit

然后git diff 456def myfile显示git diff 456def myfile的最后更改。 如果没有git log产生的知识,是否可以做同样的事情; 123abc中改变了什么?


这确实存在,但它实际上是git log一个特性:

git log -p [--follow] [-1] <path>

请注意, -p也可用于显示单个提交中的内联差异:

git log -p -1 <commit>

使用的选项:

  • -p (也是-u--patch )在git-log手册页中隐藏了deeeeeeeep,实际上是git-diff的显示选项。 与log使用时,它会显示为每次提交生成的修补程序以及提交信息,并隐藏未触及指定<path>提交。 (此行为在--full-diff的段落中描述,这会导致显示每个提交的完全差异。)
  • -1显示了对指定文件的最近更改( -n 1可以用来代替-1 ); 否则,显示该文件的所有非零差异。
  • --follow需要--follow以查看重命名之前发生的更改。
  • 据我所知,这是立即看到对文件所做的最后一系列更改的唯一方式,而不使用git log (或类似)来计算介入修订的数量或确定提交的散列。

    要查看较早的修订版本更改,只需滚动浏览日志,或者指定从中启动日志的提交或标记。 (当然,指定一个提交或标记会让你回到原来的问题,找出正确的提交或标记是什么。)

    信贷到期时的信用:

  • 由于这个答案,我发现了log -p
  • 信贷FranciscoPuga和这个答案为我展示 - --follow选项。
  • 感谢ChrisBetti提及-n 1选项和atatko提及-1变体。
  • 感谢sweaver2112让我实际阅读文档并找出-p “意味着”语义。

  • 使用git diff的方法之一是:

    git diff <commit> <path>
    

    引用最后一次提交的一个提交的常用方式是作为实际HEAD的相对路径。 你可以引用前面的提交HEAD ^(在你的例子中这将是123abc)或HEAD ^^(在你的例子中是456def)等等......

    所以你的问题的答案是:

    git diff HEAD^^ myfile
    

    如果你使用图形工具很好,这很好用:

    gitk <file>
    

    gitk现在显示文件已被更新的所有提交。 标记提交会显示与列表中前一个提交的差异。 这也适用于目录,但是您也可以选择文件来区分选定的提交。 超级有用!

    链接地址: http://www.djcxy.com/p/22661.html

    上一篇: git diff file against its last change

    下一篇: See changes to a specific file using git