git-自创建以来对分支的更改?

git-自创建以来对分支的更改?,git,branch,msysgit,Git,Branch,Msysgit,我总是问自己一些关于我创建的分支的问题,这些问题我还没有决定如何完成: 我在分行更改了哪些文件 我对分支的实际更改(差异)是什么 我向分支机构提交的日志是什么 现在,我想if知道了如何使用git cherry master获取提交到分支但未合并到master的所有提交的哈希值。有了这个,我可以一个接一个地散列,然后计算出所有内容,但是如果你有很多提交,这可能会很耗时。注意,我不想和当前的master状态进行比较。我认为关键是知道你创建分支的master的散列,但我不确定如何确定这一点 对于更改的

我总是问自己一些关于我创建的分支的问题,这些问题我还没有决定如何完成:

  • 我在分行更改了哪些文件
  • 我对分支的实际更改(差异)是什么
  • 我向分支机构提交的日志是什么

  • 现在,我想if知道了如何使用
    git cherry master
    获取提交到分支但未合并到master的所有提交的哈希值。有了这个,我可以一个接一个地散列,然后计算出所有内容,但是如果你有很多提交,这可能会很耗时。注意,我不想和当前的master状态进行比较。我认为关键是知道你创建分支的master的散列,但我不确定如何确定这一点

    对于更改的文件列表和实际差异,如果您知道要比较的两个提交,则更有意义

    如果要查看
    START\u SHA1
    END\u SHA1
    之间的差异,可以执行以下操作:

    git diff START_SHA1 END_SHA1
    
    git diff --name-only START_SHA1 END_SHA1
    
    git diff --name-status START_SHA1 END_SHA1
    
    如果只需要文件列表,可以执行以下操作:

    git diff START_SHA1 END_SHA1
    
    git diff --name-only START_SHA1 END_SHA1
    
    git diff --name-status START_SHA1 END_SHA1
    
    如果您还想知道文件中发生了什么类型的更改(如
    A
    M
    D
    C
    R
    U
    ),您可以执行以下操作:

    git diff START_SHA1 END_SHA1
    
    git diff --name-only START_SHA1 END_SHA1
    
    git diff --name-status START_SHA1 END_SHA1
    

    要找到当前结帐与主分支的不同之处

    base=`git merge-base master HEAD`
    echo $base
    
    要了解自那以后更改了哪些文件

    git diff --name-only $base HEAD
    
    显示累积的差异

    git diff $base HEAD
    

    当您想要描述一系列提交时,可以使用上面链接的答案Gabriele Petronella中的语法,
    master..HEAD
    HEAD^master
    的缩写,意思是“所有提交都可以从HEAD访问,但不包括从master访问的提交”。缺少端点默认为HEAD,因此您可以说
    git log--oneline master..

    假设您从
    master
    分支

    一,。分支后哪些文件发生了更改

    git差异主机--仅此而已
    
    二,。分支后的完全差异是什么

    git差异主机。。。
    
    三,。分支后的提交日志是什么

    git日志主机。。
    
    如果签出了它,则不需要指定
    (例如,
    git diff master…

    注意:
    git diff
    需要三个点
    git log
    需要两个点
    才能获得您要求的行为


    有关点语法的说明,请参见:


    @GabrielePetronella谢谢你,我想至少回答了3个问题。非常感谢。对git来说比较新,所以我不知道“merge base”命令。这完全回答了我的问题。谢谢!如果您使用的是像这样的外部diff工具,请将最后一行更改为
    git difftool$base HEAD--dir
    。当对别人的分支进行代码审查时,它很有用。我更喜欢
    git diff master--stat
    当我想查看已更改文件的列表时。