使用Git,如何找到当前版本与最新版本之间的差异?
git diff last version:HEAD
使用Git,如何找到当前版本与最新版本之间的差异?
git diff last version:HEAD
Answers:
我不太了解“最新版本”的含义。
由于可以使用HEAD ^访问先前的提交,因此我认为您正在寻找类似的东西:
git diff HEAD^ HEAD
从Git 1.8.5开始,它@
是的别名HEAD
,因此您可以使用:
git diff @~..@
以下内容也将起作用:
git show
如果您想知道head和任何提交之间的区别,可以使用:
git diff commit_id HEAD
这将启动您的视觉差异工具(如果已配置):
git difftool HEAD^ HEAD
由于与HEAD的比较是默认设置,因此您可以忽略它(如Orient所指出的):
git diff @^
git diff HEAD^
git diff commit_id
~
必须使用字符代替^
。@
是的别名HEAD
。而且由于~
和^
相同,当只回退一次提交时,我发现git diff @~..@
键入起来容易得多。
git show
仍然更容易,因为这@~..@
是默认显示的内容。
git show
仅打印提交消息,至少在Git 2.5.4(Apple Git-61)中不会输出特定更改的差异,因此,实际上这并不是对OP问题的答案。
git show
在于,如果HEAD
是合并提交,您将无法获得预期的结果,因为合并提交本身可能没有任何更改。git diff HEAD^ HEAD
将显示版本之间的实际更改
假设“当前版本”是工作目录(未提交的修改),而“最新版本”是HEAD
(当前分支的最新提交的修改),只需执行
git diff HEAD
以下内容归功于user Cerran
。
而且,如果您-a
在提交时总是跳过暂存区域,则只需使用即可git diff
。
摘要
git diff
显示未分阶段的更改。git diff --cached
显示分阶段的更改。git diff HEAD
显示所有更改(已分阶段和未分阶段)。来源:git-diff(1)手册页– Cerran
-a
在提交时总是跳过暂存区域,则只需使用即可git diff
。<1> git diff
显示未执行的更改。<2> git diff --cached
显示分阶段的更改。<3> git diff HEAD
显示所有更改(已分阶段和未分阶段)。来源:git-diff(1)手册页
git show HEAD~1
显示最后却一犯,和git show HEAD~2
等对老年人的提交。通过仅显示一个文件git show HEAD~2 my_file
。
最后一次提交与最后一次提交之间的差异(加上当前状态,如果有的话):
git diff HEAD~
甚至(更易于输入)
git diff @~
当前分支@
的同义词在哪里HEAD
,~
意思是“给我所述修订的父代”。
git diff HEAD^
(而不是等效HEAD~
形式)。对于像我这样的“老混蛋”,记住起来有点容易;-)
~
和“ 什么@
意思” 可以改善答案。
diff HEAD^ HEAD
应该使用一个较短的语法git diff @^!
。见git-scm.com/docs/gitrevisions为r1^!
如果HEAD指向最高提交,则可以执行以下操作:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
第一次提交与第二次提交之间的差异:
git diff HEAD~1 HEAD
第一次提交与第三次提交之间的差异:
git diff HEAD~2 HEAD
第二和第三次提交之间的差异:
git diff HEAD~2 HEAD~1
等等...
这也适用于标签(如果需要查看所有更改,请删除下面的“ uniq”和其他部分):
git diff v1.58 HEAD
以下是相同的,对于在整体存储库中微服务的持续集成(CI)可能有用:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(信用-https: //dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo)