如何在Git的分支上获取更改

自从当前分支分支以来,在分支上获取提交日志的最佳方法是什么? 我迄今为止的解决方案是:

git log $(git merge-base HEAD branch)..branch

git-diff的文档表明, git diff A...B等同于git diff $(git-merge-base AB) B 。 另一方面,git-rev-parse的文档表明r1...r2被定义为r1 r2 --not $(git merge-base --all r1 r2)

为什么这些不同? 请注意, git diff HEAD...branch给了我想要的差异,但相应的git log命令给我的比我想要的更多。

在图片中,假设:

         x---y---z---branch
        /
---a---b---c---d---e---HEAD

我想得到一个包含提交x,y,z的日志。

  • git diff HEAD...branch提供了这些提交
  • 然而, git log HEAD...branch给出了x,y,z,c,d,e。

  • 在修订列表的上下文中, A...Bgit-rev-parse如何定义它的。 git-log需要一个修订列表。 git-diff没有列出修订版本 - 它需要一两个版本,并且定义了A...B语法来表示它在git-diff页中的定义。 如果git-diff没有明确定义A...B ,那么这个语法将是无效的。 请注意, git-rev-parse联机帮助页在“指定范围”部分中描述了A...B ,并且该部分中的所有内容仅在修订范围有效(即需要修订版列表)的情况下才有效。

    要获得只包含x,y和z的git log HEAD..branch ,请尝试使用git log HEAD..branch (两个点,而不是三个)。 这和git log branch --not HEAD不一样 - 不是git log branch --not HEAD ,意思是不在HEAD上的所有提交。


    git cherry branch [newbranch]
    

    当你在master分支时,你正在问什么。

    我也很喜欢:

    git diff --name-status branch [newbranch]
    

    这不完全是你问的,但在相同的背景下仍然非常有用。


    你想看到的是传出提交列表。 你可以使用这个

    git log master..branchName 
    

    要么

    git log master..branchName --oneline
    

    我在哪里假定“branchName”被创建为“主”的跟踪分支。

    同样,要查看您可以使用的传入更改:

    git log branchName..master
    
    链接地址: http://www.djcxy.com/p/5433.html

    上一篇: How to get the changes on a branch in Git

    下一篇: Convert JS object to JSON string