仅在当前树中的所有分支的Git日志

时间:2014-03-20 17:52:25

标签: git git-branch git-log

我想在 当前树中获取所有分支的日志。

长篇故事

鉴于下面的git历史:

$ git log --all --decorate --oneline --graph
* 3d0cb35 (HEAD, master) 4th commit
| * a43b07c (branch) 4th commit in branch
|/  
* 722745a 3rd commit
* 46d0d84 2nd commit
* 3060fe0 1st commit

假设我创建了一个孤儿分支。

$ git checkout --orphan orphan
Switched to a new branch 'orphan'

在orphan分支中添加提交,并尝试使用第一个命令获取“第二个”树的git历史记录。

$ git log --all --decorate --oneline --graph
* 202f3c4 (HEAD, orphan) Orphan branch
* 3d0cb35 (master) 4th commit
| * a43b07c (branch) 4th commit in branch
|/  
* 722745a 3rd commit
* 46d0d84 2nd commit
* 3060fe0 1st commit

在上面的示例中,看起来3d0cb35202f3c4的父亲,这是不正确的。我怎样才能只提交 其中一棵树?

1 个答案:

答案 0 :(得分:4)

我不确定是否有一种完全干净的方式来做你想做的事。但是这里有一个建议......如果您知道要检查的分支集合是以提交3060fe0为根的分支,那么您可以使用git branch --contains 3060fe0来识别潜在的分支,并使用它来提供git log命令。类似的东西:

git log ..... `git branch --contains 3060fe0`

但请忽略--all选项,因为这会覆盖您的显式分支选择......

为方便起见,您可以在每个树根上删除标记,例如git tag tree1 3060fe0,然后您可以使用git branch --contains tree1