gpt4 book ai didi

git - 包含带有 "git log"的子模块提交消息

转载 作者:IT王子 更新时间:2023-10-29 01:27:11 25 4
gpt4 key购买 nike

假设我的存储库中有两个版本...每个版本都已标记如下:

  • 标签 1
  • 标记 2

现在假设提交更新了子模块引用以指向 Tag1 和 Tag2 之间的新子模块提交。我运行以下命令,并得到这个:

# show commits between these two tags
git log Tag1..Tag2


commit be3d0357b93322f472e8f03285cb3e1e0592eabd
Author: James Johnston <snip>
Date: Wed Jan 25 19:42:56 2012 +0000

Updated submodule references.

在这种情况下,唯一的变化是子模块的更新。如何让子模块提交与父存储库提交交错?

具体来说,在此示例中,假设父存储库指向子模块中的 SubTag5 标记。子模块中稍后的两次提交是一个 SubTag6 标记。显示的提交将子模块指针更新为指向 SubTag6 而不是 SubTag5。我想做的是 git log,除了已经打印的提交之外,还打印两个子模块提交以及将子模块从 SubTag5 带到 SubTag6。

最佳答案

这是一个简单的 bash 命令,它创建一个 ASCII 提交图(类似于 gitk),当子模块在 super 项目中发生更改时,它会交错相关的子模块提交。它为每次提交打印出完整的补丁,然后使用 grep 过滤掉补丁内容,只留下摘要行和子模块更改。

git log --graph --oneline -U0 --submodule Tag1..Tag2 | grep -E '^[*| /\\]+([0-9a-f]{7} |Submodule |> |$)'

它产生类似这样的输出:

* 854407e Update submodule
| Submodule SUB 8ebf7c8..521fc49:
| > Commit C
* 99df57c Commit B
* 79e4075 Commit A

关于git - 包含带有 "git log"的子模块提交消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com