仅显示Git日志中一个分支的历史记录

时间:2011-01-07 19:16:14

标签: git branching-and-merging git-log

我正在为我的项目使用Git并尝试遵循最佳实践:

  1. 我在主题分支
  2. 上工作
  3. 准备好后,我使用git merge --squash主题分支合并到我的 dev 分支中。这使我的 dev 分支保持清洁。
  4. 只要 dev 分支稳定并且团队决定发布时间,我们就会将 dev 分支合并到 master 分支中, 不使用使用squash,以及提交为版本发布的标记。
  5. 这应该保留我们的历史记录,并且使用gitk,我们可以看到所有提交的位置。但是,我希望能够看到应用于 master的提交分支。我试过了:

    git log master
    git show-branch
    

    这些都不会显示 分支的历史记录。有没有办法轻松做到这一点?

3 个答案:

答案 0 :(得分:23)

如果我正确理解你,你想看到合并回主人,而不是那些合并的历史。我相信:

git log --merges

会给你你想要的东西。

更新:添加--first-parent应该从声音中解决这个问题。

git log --merges --first-parent
  

- 第一亲

Follow only the first parent commit upon seeing a merge commit.
     

此选项可以提供更好的概述   在观看a的演变时   特定主题分支,因为   合并到主题分支往往是   只是关于调整到更新   上游不时,这个   选项允许你忽略   个人承诺带给你的   这种合并的历史。

答案 1 :(得分:8)

不幸的是,Git不存储提交的分支信息,并且提交不属于分支。 Git中的分支只是在提交过程中“移动标记”而不是人们所期望的一系列提交。

所以基本上你不能显示属于分支的提交,因为Git中没有这样的概念。

答案 2 :(得分:3)

由于Git不存储关于哪个分支从哪个分支出生的信息,因此无法自动猜测您可能希望显示哪个分支。

在这方面,--first-parent最终不会有所帮助,特别是因为很容易拥有一个以上的主人。考虑:

wc1$ git clone git://shared.com/repo
wc1$ (hack code, git commit)
wc2$ git clone git://shared.com/repo
wc2$ (hack code, git commit, git push somewhere)
wc1$ git fetch origin; git merge origin/master; git push somewhere master;

(随意采取随机项目并进行此练习。)图表。所以你不能有意义地绘制“只有一个分支”,即使提交被标记为它们所在分支的名称(因为它们都是主分支)。