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