我正在使用合并式工作流程的代码库工作,该工作流程使用 Bitbucket、GitHub 或 Gitlab 进行拉取请求 (PR)。
在分支
main
,我怎样才能看到以下内容?:
main
,或者通过 out合并 PR 直接提交到
main
(假设该人有足够的权限并且分支不受保护),并且分支示例
main
:
* commit4 (merge commit to `main`, via a PR)
|\
| * featureCommit2
| * featureCommit1
|/
* commit3
* commit2
* commit1 (initial commit)
对于 1. 我希望看到类似上图的东西。
2.我想看看这个:
* commit4 (merge commit to `main`, via a PR)
* commit3
* commit2
* commit1 (initial commit)
对于 3.我想看看这个:
* featureCommit2
* featureCommit1
...或者也许也是这样,所以我也可以看到合并提交本身:
* commit4
* featureCommit2
* featureCommit1
使用
git lg
,Coderwall.com 的别名:https://coderwall.com/p/euwpig/a-better-git-log
# Add it as an alias
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
# Use it
git lg
用途:
git lg --first-parent # single-line log version
git log --first-parent # full-log version
这是我的问答:如何查看线性
git log
(排除功能提交),仅显示对main
的提交或合并到main
,感谢@larsks在这里的回答。
这本质上是与上面2.相反的,并且花了我相当长的时间来思考和弄清楚。
使用这个:
# Show everything in commit4's right parent, but NOT in its left parent
git lg ^commit4~ commit4^2
# Show everything in commit4, but NOT in its left parent
git lg ^commit4~ commit4
更具体地说,为此:
* featureCommit2
* featureCommit1
...用这个:
git lg ^commit4~ commit4^2
为此:
* commit4
* featureCommit2
* featureCommit1
...用这个:
git lg ^commit4~ commit4
如果您在线访问制作 commit4
的 PR,您会看到它仅显示这些提交,或者
commit4
加
featureCommit2
和
featureCommit1
,或者仅
featureCommit2
和
featureCommit1
,具体取决于您正在使用的在线系统。说明
如何挑选单个提交、多个提交或一系列提交:
commit^2
是参与创建
commit
的合并的两个父级的直接 right父级。
commit~
是参与创建
commit
的合并的两个父级的直接 left父级。
的克拉 (
^
) 符号表示“不”该提交,或“排除”该提交。
所以:
commit4
^commit4~
not在
commit4
的 left父级中”,并且
commit4^2
commit4
的 right父级中”
git lg ^commit4~ commit4^2
commit4
的 right父级中的所有提交(即:不包括
commit4
本身),但 not位于
commit4
的 left父级中”,和
git lg ^commit4~ commit4
commit4
中或下的所有提交(包括
commit4
本身),但不在
commit4
的 left父级中”。