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 。 --follow选项。 -n 1选项和atatko提及-1变体。 -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