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

Git 查找当前版本和上一版本之间的差异,git,Git,使用Git,您如何找到当前版本和上一版本之间的差异 git diff last version:HEAD 假设“当前版本”是工作目录(未提交的修改),“最后版本”是HEAD(当前分支的最后提交的修改),只需执行以下操作 git diff HEAD 用户Cerran将获得以下奖励 如果在提交时总是使用-a跳过暂存区域,那么只需使用git diff 摘要 git diff显示未老化的更改 git diff--cached显示阶段性更改 git diff HEAD显示所有更改(分阶段和未分阶段)

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

git diff last version:HEAD
假设“当前版本”是工作目录(未提交的修改),“最后版本”是
HEAD
(当前分支的最后提交的修改),只需执行以下操作

git diff HEAD
用户
Cerran
将获得以下奖励


如果在提交时总是使用
-a
跳过暂存区域,那么只需使用
git diff

摘要

  • git diff
    显示未老化的更改
  • git diff--cached
    显示阶段性更改
  • git diff HEAD
    显示所有更改(分阶段和未分阶段)

  • 资料来源:git diff(1)手册页–Cerran

    我真的不理解“最新版本”的含义

    由于可以使用HEAD^访问上一次提交,我认为您正在寻找以下内容:

    git diff HEAD^ HEAD
    

    从Git 1.8.5开始,
    @
    头的别名,因此您可以使用:

    git diff @~..@
    
    git diff commit_id HEAD
    
    以下工作也将起作用:

    git show
    
    如果您想知道head和任何提交之间的差异,可以使用:

    git diff @~..@
    
    git diff commit_id HEAD
    
    这将启动您的visual diff工具(如果已配置):

    由于与HEAD的比较是默认值,因此可以忽略它(如所指出的):

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

      • 您也可以这样做:

        与上一次提交进行比较

        git diff --name-status HEAD~1..HEAD
        
        与当前和前两次提交进行比较

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

        如果您添加了,但尚未提交,只需使用
        cached
        标志即可:

        git diff --cached --color
        

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

        甚至(更容易打字)

        其中,
        @
        是当前分支机构的
        负责人
        的同义词,
        ~
        的意思是“给我所述修订的父项”。

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

        git show
        
        首先,使用“
        git log
        ”列出存储库的日志

        现在,选择与这两个提交相关的两个提交ID。您希望看到差异(示例-最上面的提交和一些较旧的提交(根据您对当前版本和一些旧版本的期望))

        接下来,使用:

        git diff <commit_id1> <commit_id2>
        
        git-diff
        

        git difftool <commit_id1> <commit_id2>
        
        git difftool
        
        快速而简单,假设您在master中:

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

            git diff asdfioei91819280din198:file.txt file.txt
        
        我使用安装了Eclipse插件的IDE

        我将文件与其历史记录的任何版本进行比较(如)

        菜单项目浏览器→ 文件→ 右击→ 团队→ 显示在历史上

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

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

        以下内容与此相同,这对于单一存储库中的微服务(CI)可能很有用:

        git diff v1.58 HEAD  --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
        <Folder Name> 
        
        git diff v1.58 HEAD--name only | sort-u | awk'BEGIN{FS=“/”}{print$1}}| uniq
        

        (信用-

        如果顶部提交由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
        
        第二次和第三次提交之间的差异:

        git diff HEAD~2 HEAD
        
        git diff HEAD~2 HEAD~1
        

        以此类推……

        以显示提交中的个人更改,并向头部显示

        git show Head~0
        
        git diff Head~0
        
        要显示提交中的累积的更改,请单击“开始”

        git show Head~0
        
        git diff Head~0
        
        其中0是所需的提交次数。

        如果最后版本表示最后一个标记,而当前版本表示头部(当前状态),则与最后一个标记不同:

        寻找:

        最后一个标签是:

        $ git tag --list | tail -n 1
        v20.11.25.351
        
        综合起来:

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

        如果要更改最后一次提交的
        n
        committes,可以使用以下命令:

        git差异头~n

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

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

        git-diff-HEAD~5

        我想要像提交版和之前的版本一样的东西……git-diff-HEAD-1作为git 1.8.5的别名,
        @
        HEAD
        的别名。由于
        ~
        ^
        在只返回一次提交时是相同的,我发现
        git diff~..
        更容易键入。@Andrew
        git show
        更容易,因为
        @~..@
        是默认要显示的内容。
        git show
        的问题是,如果
        HEAD
        是一个合并提交,您将无法获得您期望的结果,因为合并提交本身可能没有任何更改
        git diff HEAD^HEAD
        将显示版本之间的实际更改备注:对于Windows命令提示符,
        ^
        是转义字符。可以键入
        ^
        来表示
        ^
        ,如果在提交时总是使用
        -a
        跳过暂存区域,则可以简单地使用
        git diff
        <代码>git diff
    显示未老化的更改
    git diff--cached
    显示分段更改<代码>git diff HEAD显示所有更改(分阶段和未分阶段)。来源:这应该是公认的答案,因为它回答了问题的意图。git中“当前未老化版本”的名称是什么?真的有名字吗?这就是我要找的。回答得很好。使用
    git show HEAD~1
    显示最后一次提交,使用
    git show HEAD~2
    等方式显示较早的提交。通过
    git Show HEAD~2 my_file
    只显示一个文件。我非常喜欢
    git diff HEAD^
    (而不是等效的
    HEAD~
    表单)。对于像我这样的“老家伙”来说,这更容易记住;-)胡萝卜在一些码头是个问题。很高兴有选择权。回答可以通过解释来改进