是否有可能让git在特定文件之间产生差异,因为它现在存在,并且在最后一次提交之前存在改变它?
也就是说,如果我们知道:
$ git log --oneline myfile
123abc Fix some stuff
456def Frobble the foos
789dba Initial commit
Run Code Online (Sandbox Code Playgroud)
然后git diff 456def myfile显示myfile的最后一次更改.没有所产生的知识,是否有可能做同样的事情git log; 123abc有什么变化?
Fra*_*uga 215
使用git diff的方法之一是:
git diff <commit> <path>
Run Code Online (Sandbox Code Playgroud)
引用最后一次提交的一次提交的常用方法是作为实际HEAD的相对路径.您可以将以前的提交引用为HEAD ^(在您的示例中这将是123abc)或HEAD ^^(在您的示例中为456def)等等...
所以你的问题的答案是:
git diff HEAD^^ myfile
Run Code Online (Sandbox Code Playgroud)
Kyl*_*and 201
这确实存在,但它实际上是一个特征git log:
git log -p [--follow] [-1] <path>
Run Code Online (Sandbox Code Playgroud)
请注意,-p也可以用于显示单个提交的内联差异:
git log -p -1 <commit>
Run Code Online (Sandbox Code Playgroud)
使用的选项:
-p(也-u或--patch)在git-log手册页中隐藏了deeeeeeeep,实际上是一个显示选项git-diff.与之一起使用时log,它会显示为每次提交生成的补丁,以及提交信息,并隐藏不接触指定的提交<path>.(此行为在段落中描述--full-diff,这会导致显示每个提交的完整差异.)-1仅显示指定文件的最新更改(-n 1可以代替-1); 否则,显示该文件的所有非零差异.--follow 需要查看重命名之前发生的更改.据我所知,这是立即查看对文件所做的最后一组更改的唯一方法,而不使用git log(或类似)计算干预修订的数量或确定提交的哈希值.
要查看旧版本的更改,只需滚动日志,或指定从中启动日志的提交或标记.(当然,指定提交或标记会使您回到原始问题,即确定正确的提交或标记是什么.)
信用到期的信用:
log -p感谢这个答案.--follow选项.-n 1选项和atatko提及-1变体.-p语义上的"意思".如果您使用图形工具很好,这非常有效:
gitk <file>
Run Code Online (Sandbox Code Playgroud)
gitk现在显示文件已更新的所有提交.标记提交将显示列表中先前提交的差异.这也适用于目录,但您也可以选择要为所选提交进行diff的文件.超级有用!
| 归档时间: |
|
| 查看次数: |
170234 次 |
| 最近记录: |