在“git merge”式工作流程中,仅显示合并之前某人在 PR(拉取请求)中拥有的唯一提交

问题描述 投票:0回答:1

我正在使用合并式工作流程的代码库工作,该工作流程使用 Bitbucket、GitHub 或 Gitlab 进行拉取请求 (PR)。

在分支

main
,我怎样才能看到以下内容?:

  1. 分支中提交的分叉和合并的图形化描述,
  2. 仅包含“主要”提交的列表 - 即:合并通过 PR(拉取请求)提交
    main
    ,或者通过
    out
    合并 PR 直接提交到 main(假设该人有足够的权限并且分支不受保护),并且
  3. [最重要!]某人的 PR 中任何给定合并提交的唯一提交的列表

分支示例

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 github gitlab bitbucket git-log
1个回答
0
投票

1.分支的图形描述,显示分叉和合并

使用

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

2.仅包含“主要”提交的列表

用途:

git lg --first-parent   # single-line log version
git log --first-parent  # full-log version

这是我的问答:如何查看线性

git log
(排除功能提交),仅显示对
main
的提交或合并到
main
,感谢@larsks在这里的回答

3.某人的 PR 中任何给定合并提交的唯一提交的列表

这本质上是与上面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
,具体取决于您正在使用的在线系统。

说明

正如我在此处的回答中首先写的:

如何挑选单个提交、多个提交或一系列提交

  1. commit^2
     是参与创建 
    commit 的合并的两个父级的直接 right
     父级。
  2. 并且
  3. commit~
     是参与创建 
    commit 的合并的两个父级的直接 left
     父级。
提交前面

的克拉 (

^
) 符号表示“不”该提交,或“排除”该提交。 所以:

    commit4
  1. 表示“提交4”,
  2. ^commit4~
  3. 表示“
    not
    commit4
    left
    父级中”,并且
  4. commit4^2
  5. 表示“在
    commit4
    right
    父级中”
  6. 所以:

    git lg ^commit4~ commit4^2
  1. 的意思是“显示
    commit4
    right
    父级中的所有提交(即:不包括 commit4 本身),但
    not
    位于 commit4
    left
    父级中”,和
  2. git lg ^commit4~ commit4
  3. 的意思是“显示
    commit4
    中或下的所有提交(
    包括
    commit4 本身),但
    commit4
    left
    父级中”。
© www.soinside.com 2019 - 2024. All rights reserved.