我做了一些搜索并找到了:
git log myBranchName
作为可能的解决方案。但是当我的分支是主分支时会发生什么?我跑的时候:
git log master
它似乎返回所有提交给任何分支的东西。根据我读过的内容,它列出了与主分支相关的所有提交。知道了,我怎么才能调出主分支的提交历史记录?
答案 0 :(得分:50)
我认为这就是你想要的
git log --first-parent master
引用手册
在看到合并提交时,仅遵循第一个父提交。这个 在查看a的演变时,选项可以提供更好的概述 特定主题分支,因为合并到主题分支往往是 只是关于不时调整到更新的上游,这个 选项允许您忽略引入您的个人提交 这种合并的历史。
答案 1 :(得分:14)
由于Git的分支模型,提交不属于单个或多个分支。分支是整个提交图中指向单个提交对象的指针。因此,当你说X中的提交是“在分支X上”时,通常意味着当从分支X指向的提交开始时它是可达的。
对于git log
,默认行为等于git log HEAD
,其中HEAD指的是当前分支当前指向的提交。因此,如果您在主分支上,它等于git log master
,显示从最近一次提交开始时可以访问的所有提交。
不幸的是,你所指的某个分支的提交在Git中没有明确定义。如果我在master上进行提交,然后创建一个指向同一提交的新分支(例如使用git branch newbranch
),那么除了名称之外,该分支与master分支完全相同。所以每个属性“在分支主机上制作”现在也暗示“在分支新分支上制作”。因此,你不能在Git中拥有这个属性。
即使是parkydr的解决方案,它显示了仅在合并的一侧进行的所有提交,也不是一个防故障解决方案。理想情况下,它会隐藏在单独的非主分支上进行的所有提交,然后将这些提交合并回主服务器。因此,您只能获得直接对主线进行的提交,或者在其他一些提交中进行合并提交的提交。但是,有两件事会妨碍它的运作:
git merge somebranch
将快进提交,导致master分支指向与 somebranch 相同的提交。因此,您“丢失”这些提交最初在单独分支上创建的信息。您可以强制Git始终使用git merge --no-ff
创建合并提交,但之后这对您没有帮助。所以,最重要的是你无法安全地获得这样的历史。你最好习惯Git灵活的分支模型如何运作。