Git 查看从分支开始的所有提交(仅查看当前分支)
从这里到我们创建这个分支的那一刻,是否存在一种“git log”当前分支的所有提交的方法?一种“$git日志--当前分支…” 看这个图表,我的意思是相同的结果Git 查看从分支开始的所有提交(仅查看当前分支),git,Git,从这里到我们创建这个分支的那一刻,是否存在一种“git log”当前分支的所有提交的方法?一种“$git日志--当前分支…” 看这个图表,我的意思是相同的结果 $ git log --oneline --graph 7050d07..HEAD (请注意,git log 7050d07..HEAD“表示“git log HEAD^7050d07,其中前缀^类似于短期的--not。这可能还没有意义;请参见下文,并研究和的文档。这是理解下面两个git别名的关键。) Git没有“何时创建分支”的概念。
$ git log --oneline --graph 7050d07..HEAD
(请注意,git log 7050d07..HEAD
“表示“git log HEAD^7050d07
,其中前缀^
类似于短期的--not
。这可能还没有意义;请参见下文,并研究和的文档。这是理解下面两个git别名的关键。)
Git没有“何时创建分支”的概念。分支名称只是一个移动的标签;更具体地说,本地分支是在该分支上添加新提交时自动移动的名称。所以你不可能完全得到你想要的,但是你可能会得到你想要的
Git确实有我所说的“分支结构”:一段提交图。在我看来,这里需要的是一个git日志
,它在分支结构有一个fork时停止,即在有两个父级的第一次提交之前停止。但不清楚这是否真的是你想要的。例如,考虑这个图表:
*
/ \
... o--o--*--* *--* <-- br1
\ \ /
\ *
\
o--o <-- br2
(第二个--not
通常是不必要的:它反转了第一个--not
的效果,因此,例如,标记名参数可以添加更多的提交,而不是减去提交。此外,名称ltf
来自我的一个模糊想法,不是很有意义,但它仍然在我的~/.gitconfig
中。)
这里的想法是为每个ref使用,以生成所有本地分支名称(简写形式),如果我们在一个分支上,则丢弃当前分支(grep-v
,名称来自git symbolic ref
),并使用这些分支名称排除其他分支上的任何提交
(所有附加参数都像往常一样附加到别名上,因此git ltf--oneline--graph
在这里起作用。)
如果确实要排除从第一次合并(两个或多个父级)提交开始并向后工作的所有提交,这里的技巧是使用git rev list
和--merges
或--min parents=2
(这些是相同的选择器)来定位它:
git rev-list --merges -1 HEAD
这是要随--not
一起提供的提交ID(或前缀^
,但如果没有这样的版本,则会出现错误,因此--not
在这里更优越):
(同样,第二个--not
与第一个--not
的效果相反,就像上面的ltf
别名一样。)因此,使用此别名,git ltm--graph--oneline
将产生:
* b137094 Alter this stuff
* b2046b6 Change that stuff
* e6fd3b8 Hello world
* 31f3922 Lol
* d44552a ROTFL
(这里的--图肯定很无聊,因为没有叉子。)谢谢“$git log HEAD--not$(git rev list--merges-1 HEAD)”是的,但是如果HEAD
后面的历史中没有合并,第二个会表现不正确(因为。HEAD
表示HEAD..HEAD
是空的)。
git rev-list --merges -1 HEAD
[alias]
ltm = !git log HEAD --not $(git rev-list --merges -1 HEAD) --not
* b137094 Alter this stuff
* b2046b6 Change that stuff
* e6fd3b8 Hello world
* 31f3922 Lol
* d44552a ROTFL