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

标签 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'

在孤立分支中添加一个提交并尝试使用第一个命令来获取“第二个”树的 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 的父亲,但事实并非如此。我怎样才能只获得其中一棵树的提交?

最佳答案

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

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

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

为方便起见,您可以在每个树根上放置一个标签,例如 git tag tree1 3060fe0 , 那么你可以只使用 git branch --contains tree1 .

关于仅在当前树中的所有分支的 Git 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541261/

相关文章:

git - 仅在 Git 中为子目录切换分支

git - 什么管道命令提供与 git log --follow 相同的功能?

Git merge 冲突 : Cannot find the problem

git - GitHub/Azure Repos 上的服务器端自定义 git merge 驱动程序

Git - 只推送最近提交到 github

Git:如何通过.gitignore 忽略 stash 文件/点文件/文件名为空的文件?

git log pull 对象以获取 Shortstats

git - 在不更改本地存储库的情况下撤消远程分支上的 git push?

git - 这条消息是什么意思?不止一个分支.<name>.remote

bash - Git 为单独文件夹中的每个分支获取工作树 - Bash