查找当前版本和上次版本之间的差异

使用Git,您如何找到当前版本和上一个版本之间的差异?

git diff last version:HEAD
636611 次浏览

假设“当前版本”是工作目录(未提交的修改),“最后一个版本”是HEAD(当前分支的最后一次提交的修改),只需

git diff HEAD

以下信用归用户Cerran所有。

如果您在提交时总是跳过带有-a的暂存区域,那么您可以简单地使用git diff

总结

  1. git diff显示未分阶段的更改。
  2. git diff --cached显示了分阶段的更改。
  3. git diff HEAD显示所有更改(暂存和未暂存)。

来源: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

警告

  • @ScottF和@Panzercrisis在注释中解释说,在Windows上必须使用~字符而不是^

你也可以这样做:

与上一次提交比较

git diff --name-status HEAD~1..HEAD

与当前和前两次提交进行比较

git diff --name-status HEAD~2..HEAD

如果您添加了但尚未提交,请使用cached标志:

git diff --cached --color

最后一次提交和最后一次提交之间的区别(加上当前状态,如果有的话):

git diff HEAD~

甚至(更容易打字)

git diff @~

其中@是当前分支HEAD的同义词,~表示“给我提到的修订的父级”。

正如评论 by合金所指出的,如果“当前和最新版本”是指最后一次提交和之前的提交,您可以简单地使用

git show

首先,使用“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提交,您可以使用以下内容:

git diff HEAD~n

因此,对于当前提交的最后5次提交(包括您当前的提交),它将是:

git diff HEAD~5