查找当前版本和最后版本之间的差异?

时间:2012-03-28 08:15:24

标签: git

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

git diff last version:HEAD

14 个答案:

答案 0 :(得分:1016)

我真的不明白“最后一个版本”的含义。

由于可以使用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

警告

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

答案 1 :(得分:140)

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

git diff HEAD

以下内容归功于用户Cerran

如果您在提交时始终使用-a跳过暂存区域,则可以使用git diff

<强>摘要

  1. git diff显示未分阶段的更改。
  2. git diff --cached显示了分阶段的更改。
  3. git diff HEAD显示所有更改(分阶段和非分阶段)。
  4. 资料来源:git-diff(1)手册页 - Cerran

答案 2 :(得分:102)

正如comment amalloy所指出的,如果是&#34;当前版本和最后版本&#34;你的意思是最后一次提交和之前的提交,你可以简单地使用

git show

答案 3 :(得分:51)

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

git diff HEAD~

甚至(更容易打字)

git diff @~

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

答案 4 :(得分:50)

你也可以这样做:

与之前的提交进行比较

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

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

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

答案 5 :(得分:15)

如果您添加了cached标记,但尚未提交,请使用git diff --cached --color

答案 6 :(得分:6)

快速而简单,假设你是主人:

    git diff (checkout_id):file.txt file.txt

示例:

    git diff asdfioei91819280din198:file.txt file.txt

答案 7 :(得分:4)

首先,使用“Public OldD2 As Variant Private Sub Worksheet_Calculate() If Range("D2").Value <> OldD2 Then Application.EnableEvents = False Range("E2").Value = Now OldD2 = Range("D2").Value Application.EnableEvents = True End If End Sub ”列出仓库中的日志。

现在,选择两个commit-id,相关两个提交,你想要看到差异(示例 - 最顶层的提交和一些较旧的提交[根据您的期望]当前版本和一些旧版本] )。

接下来,使用:

git log

git diff <commit_id1> <commit_id2>

答案 8 :(得分:1)

我将bitbucket与Eclipse IDE一起安装了Eclipse EGit插件。 我比较了文件历史记录的任何版本(例如SVN)。

项目资源管理器>文件右键单击>团队>在历史记录中显示

这将带来该文件上所有更改的历史记录。 现在,按CTRL键并单击并选择任意两个版本>“相互比较”

答案 9 :(得分:1)

这也适用于标签。 (如果需要查看所有更改,请删除下面的“ uniq”和其他部分)

 git diff v1.58 HEAD 

下面是相同的,这可能对Monorepo中微服务的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

答案 10 :(得分:1)

如果顶部提交是由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

以此类推...

答案 11 :(得分:1)

显示个人更改中的内容,

git show Head~0

显示一次提交中的累计更改。

git diff Head~0

其中0是所需的提交次数。

答案 12 :(得分:0)

如果最新版本表示 last标签,而当前版本表示HEAD(当前状态),则仅是与last标签的差异:

正在寻找tags

$ git tag --list
...
v20.11.23.4
v20.11.25.1
v20.11.25.2
v20.11.25.351

最后一个标签是:

$ git tag --list | tail -n 1
v20.11.25.351

将它们放在一起:

tag=$(git tag --list | tail -n 1)
git diff $tag

答案 13 :(得分:0)

如果要更改最后issue = jira.issue(str(sys.argv[3])) jira.transition_issue(issue, transition='Close', resolution={'name':'Cannot Reproduce'}) 次提交,可以使用以下命令:

n

因此,对于当前提交中的最后5次提交(包括当前提交在内的计数),将为:

git diff HEAD~n