使用Git,您如何找到当前版本和上一个版本之间的差异?
git diff last version:HEAD
假设“当前版本”是工作目录(未提交的修改),“最后一个版本”是HEAD(当前分支的最后一次提交的修改),只需
HEAD
git diff HEAD
以下信用归用户Cerran所有。
Cerran
如果您在提交时总是跳过带有-a的暂存区域,那么您可以简单地使用git diff。
-a
git diff
总结
git diff --cached
来源:git-diff(1)手册页面-Cerran
我真的不明白“最后一个版本”的含义。
由于可以使用HEAD^访问之前的提交,我认为您正在寻找类似的内容:
git diff HEAD^ HEAD
这也可以应用于:委员会
git diff $commithash^ $commithash
从Git 1.8.5开始,@是HEAD的别名,因此您可以使用:
@
git diff @~..@
以下也将起作用:
git show
如果你想知道head和任何提交之间的差异,你可以使用:
git diff commit_id HEAD
这将启动您的视觉差异工具(如果配置):
git difftool HEAD^ HEAD
由于与HEAD的比较是默认的,您可以省略它(如东方所指出的):
git diff @^git diff HEAD^git diff commit_id
~
^
你也可以这样做:
与上一次提交比较
git diff --name-status HEAD~1..HEAD
与当前和前两次提交进行比较
git diff --name-status HEAD~2..HEAD
如果您添加了但尚未提交,请使用cached标志:
cached
git diff --cached --color
最后一次提交和最后一次提交之间的区别(加上当前状态,如果有的话):
git diff HEAD~
甚至(更容易打字)
git diff @~
其中@是当前分支HEAD的同义词,~表示“给我提到的修订的父级”。
正如评论 by合金所指出的,如果“当前和最新版本”是指最后一次提交和之前的提交,您可以简单地使用
首先,使用“git log”列出存储库的日志。
git log
现在,选择属于这两个提交的两个提交ID。您希望看到差异(示例-最高的提交和一些较旧的提交(根据您对当前版本和一些旧版本的期望))。
接下来,使用:
git diff <commit_id1> <commit_id2>
或
git difftool <commit_id1> <commit_id2>
快速和简单,假设你在主:
git diff (checkout_id):file.txt file.txt
示例:
git diff asdfioei91819280din198:file.txt file.txt
我在安装了EclipseEGit插件的Eclipse IDE中使用比特桶。
我比较其历史记录的任何版本的文件(如SVN)。
菜单Project Explorer→文件→右键单击→团队→历史上的表演。
这将带来该文件上所有更改的历史记录。现在Ctrl单击并选择任何两个版本→“互相比较”。
这也适用于标签(如果您需要查看所有更改,请删除下面的'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)
如果HEAD指向顶部提交,那么你可以这样做:
commit1 -> HEADcommit2 -> HEAD~1commit3 -> HEAD~2
第一次和第二次提交之间的差异:
git diff HEAD~1 HEAD
第一次和第三次提交之间的差异:
git diff HEAD~2 HEAD
第二次和第三次提交之间的差异:
git diff HEAD~2 HEAD~1
等等…
若要在提交中显示个人更改,请转到head。
git show Head~0
若要在提交中显示积累更改,请转到head。
git diff Head~0
其中0是所需的提交数。
如果最后一个版本表示最后一个标签,而当前版本表示HEAD(当前状态),则它只是与最后一个标签的差异:
寻找标签:
$ git tag --list...v20.11.23.4v20.11.25.1v20.11.25.2v20.11.25.351
最后一个标签将是:
$ git tag --list | tail -n 1v20.11.25.351
把它放在一起:
tag=$(git tag --list | tail -n 1)git diff $tag
如果您想要更改最后的n提交,您可以使用以下内容:
n
git diff HEAD~n
因此,对于当前提交的最后5次提交(包括您当前的提交),它将是:
git diff HEAD~5