git日志只返回对主分支进行的提交?

我做了一些搜索,发现:

git log myBranchName

作为可能的解决方案。 但是当我的分支是主分支时会发生什么? 当我运行时:

git log master

它似乎将所有提交给任何分支的内容都返回。 根据我读过的内容,它列出了与主分支相关的所有提交。 了解这一点,我如何才能调用主分支的提交历史记录?


我认为这是你想要的

git log --first-parent master

引用手册

在查看合并提交后,只跟踪第一个父提交。 当查看特定主题分支的演变时,此选项可以提供更好的概述,因为合并到主题分支往往只是适应不断更新的上游时间,并且此选项允许您忽略单独提交到你的历史通过这样的合并。


由于Git的分支模型,提交不属于单个或多个分支。 分支是指向整个提交图中单个提交对象的指针。 所以当你说X中的一个提交是“在分支X上”的时候,你通常意味着它在分支X指向的提交开始时是可访问的。

对于git log ,默认行为等于git log HEAD ,其中HEAD引用当前分支当前指向的提交。 所以,如果你在主分支上,它就等于git log master ,显示在最近的提交开始时可以访问的所有提交。

不幸的是,你所指的作为对某个分支的提交在Git中没有明确定义。 如果我在master上进行提交,然后创建一个指向相同提交的新分支(例如,使用git branch newbranch ),那么除了名称外,该分支与主分支完全相同。 因此,“分支大师制造的每一个财产”现在也意味着“在分支新生产”。 因此你不能在Git中拥有这个属性。

即使parkydr的解决方案,它显示所有仅在合并的一侧进行的提交,也不是一个失败的解决方案。 理想情况下,它会隐藏所有那些在独立的非主分支上进行的提交,然后合并回主。 因此,您只会直接向主线提交提交或在其他提交中合并提交合并的提交。 但是有两件事会阻止它的运行:

  • 快进合并:当你从主分支并创建一些提交,而不直接在主设备上创建新的提交时,然后git merge somebranch主分支上的分支将快进提交,导致主分支指向与提交相同的提交somebranch。 因此,您“失去”那些提交最初在独立分支上创建的信息。 你可以强制Git始终创建合并提交,使用git merge --no-ff但是这对你以后不会有所帮助。
  • 无法保证合并顺序:当您在主设备上并合并分支时,以前的主提交将始终是第一个父设备。 所以你会得到你想要的行为。 但是,完全有可能在所述分支上,并且将主合并代替,导致主提交是第二个父代。 然后master可以被快速转发(或重置)到新的提交,从而产生一个“反向”视图。
  • 所以,底线是你无法安全地获得这样的历史。 你最好习惯Git灵活的分支模型的工作原理。

    链接地址: http://www.djcxy.com/p/8671.html

    上一篇: git log to return only the commits made to the master branch?

    下一篇: RestKit mapKeyPath to Array index