如果我运行git log
,有没有可以指定的参数来从输出中判断每个提交属于哪个分支?
编辑:为了澄清,我知道一个提交可能属于两个分支(例如)。我想要的是获取提交在log
中所属的最新分支。因此,如果我从master
分支创建名为foo
的分支,它将属于这两个分支,但我想获取foo
。
如果我运行git log
,有没有可以指定的参数来从输出中判断每个提交属于哪个分支?
编辑:为了澄清,我知道一个提交可能属于两个分支(例如)。我想要的是获取提交在log
中所属的最新分支。因此,如果我从master
分支创建名为foo
的分支,它将属于这两个分支,但我想获取foo
。
我认为你正在寻找的是非常有用的命令:
git branch -a --contains <SHA1sum-of-commit>
......这将告诉您包含该提交的每个分支(本地和远程跟踪)。
不幸的是,我认为没有一个git log
选项可以为每个提交输出此信息。 使用--all --source
接近,但仅显示每个提交中的一个分支。 但是,如果在gitk --all
中单击提交,您将看到它列出了该提交所在的每个分支。
然而,您问题的一部分定义不太清晰-您问:
我想要获取提交日志所属的最新分支
我不确定您的意思-“最新分支”可能是(a)创建最近的引用(b)修改最近的引用(c)具有最近提交的分支等等。 也许从提交图中更好地定义您想要的方式。
使用 git log
命令,你已经可以获取到当前所在分支上的所有提交记录。
如果想查看合并分支的提交记录,可以使用如下命令:
$ git log --pretty=oneline --graph
创建一个日志树并查看一个提交所合并的分支,使用--graph
选项可生成提交树,并用--pretty=oneline
选项为每个提交生成单行可视化。要将分支(作为引用)添加到日志中,请:$ git log --all --source --pretty=oneline --graph
显示带有提交的分支:$ git show-branch
git show-branch
而不是 git log
:http://www.kernel.org/pub/software/scm/git/docs/git-show-branch.html - Luwe--all --source
的问题在于提交可能在多个分支上,而--source
只显示其中一个。gitk --all
或git branch -a --contains <commit>
更不容易误导。 - Mark Longairlog --all --source
不错,但是show-branch --all
非常棒!@Tower 是的,你可以使用--sha1-name
选项,在show-branch
中获取提交哈希值。 - TachyonVortex您尝试过使用git log的“--decorate”选项吗?
我在我的.gitconfig文件中有这个别名:
[alias]
k = log --graph --oneline --abbrev-commit --decorate
它展示了与gitk相似的图形,分支名称“装饰”在分支上最新提交旁边。
git branch -a --contains
是查看包含特定提交的所有分支(无论有多少个分支)的好方法。如果有超过20个分支,则gitk --all
不会列出它们,而只会显示:many (22)
。另一个解决方案是git show-branch --all
,非常棒,但不幸的是不能处理超过29个分支。 - TachyonVortex--contains
。 - Michael Shigorin