Mar*_*rco 5 git github git-log
在共享的 GitHub 存储库中,我想用它git log
来显示最近提交的列表。
当前的历史类似于以下内容:
(master)
B------Merge1--Merge2--Merge3
/ / /
- -C1 / /
- - -C2 /
- - -C3----------C4
Run Code Online (Sandbox Code Playgroud)
凡Merge
提交的合并拉请求的结果,并C
提交由该仓库的叉到来。
git log
显示如下:
git log --oneline master
Merge3
Merge2
Merge1
B
Run Code Online (Sandbox Code Playgroud)
但我真正感兴趣的是C
提交。
git log --graph
是我发现显示 C1、C2 和 C3 的唯一可能方式。
是否还有其他选项(不涉及--graph
)可以显示 C1、C2 和 C3?
我希望能够做这样的事情
git log --oneline --no-merges <...insert magic here...> master
C4
C3
C2
C1
B
Run Code Online (Sandbox Code Playgroud)
我在手册页中发现的唯一明智的事情是--first-parent
,但我发现无法禁用或反转它。
如果您没有进行合并和拉取,那么--no-ff
在分支提示处进行实际的合并提交将是一个不可靠的指标,因此如果您只是不想看到合并提交,
git log --no-merges --oneline -n 10 # or --since, or something, might do
Run Code Online (Sandbox Code Playgroud)
如果您想根据提交属性决定返回列表多远,则 rev-list 没有作为内置截止标准,这只是过滤输出rev-list
或更一般的某些log --pretty=format:
选择中的这些属性的问题,这是一个只列出了通往选定分支的合并分支的提示,得到 C1-C2-C4 ——因为我不知道你是如何决定绕过 C4 的......
#!/bin/sh
git rev-list --parents "${@-HEAD}" \
| sed -n '/^[^ ]* [^ ]* /!q;s///;s/[^ ]*/&^!/gp' \
| xargs git log --oneline
Run Code Online (Sandbox Code Playgroud)
sed:
/^[^ ]* [^ ]* /!q # quit at first rev with less than two parents
s/// # strip rev and its first parent
s/[^ ]*/&^!/gp # append ^! to all other (merged) revs
Run Code Online (Sandbox Code Playgroud)
后缀告诉不要自动包含父母^!
。log
归档时间: |
|
查看次数: |
3353 次 |
最近记录: |