如何在git log中显示两个分支提交的交集?

wlsrxk51  于 2023-09-29  发布在  Git
关注(0)|答案(1)|浏览(187)

我有一个 main 分支作为根。根据次要版本,我在dev家族中创建分支,例如 dev/2.3,dev/2.4,dev/2.5,dev/2.6。目前,dev/2.6 是开发的活跃分支。
对于一个特定的任务,我从 dev/2.6 分支出来,例如在 *tasks/task 1 * 中工作。我提交并将它们推送到远程任务/task 1分支。之后,我创建了一个从 *tasks/task 1 * 到 dev/2.6 的拉取请求。然后,过了一段时间,我创建了一个从 dev/2.6main 的拉取请求。
我的问题是,在通过一个pull request将 dev/2.6 合并到 main 之后,是否可以使用

git log

命令来查找 dev/2.6main 之间提交的交集?
比如说我试过

git --no-pager log --oneline main..dev/2.6,

但此命令仅显示提交中的差异。我需要的是记录在 dev/2.6 中所做的所有提交,这些提交存在于main中,但不存在于 dev/2.4dev/2.5 等中。是否有git log语法用于显示仅在dev/2.6和main中存在的提交列表的输出??
谢谢预付款

nzk0hqpo

nzk0hqpo1#

你不能完全得到,因为如果你把它们合并在一起,那么dev/2.6中的所有内容都在master中(但不是master中的所有内容都在dev/2.6中)
我能想到的最接近你想要的东西是“自从我们上一个版本以来,dev/2.6增加了什么?”如果你已经用版本标签标记了那个版本,这会更容易。
这里有一些我能想到的方法,试图得到你想要的:
简而言之:git log main dev/2.6
但最好还是
git log --graph --abbrev-commit --decorate --date=short main dev/2.6
或任何您喜欢的日志机制。
这意味着将maindev/2.6记录在一起,这样您就可以看到它们在哪里发散,在哪里合并,以及之后是否发散。
我认为更好的方法是使用git shortlog dev/2.6 ^dev/2.5git shortlog dev/2.6 ^origin/master,或者用dev/2.6中断的fork点替换origin/master。这将分别显示dev/2.6上没有的dev/2.5master
如果您多次将master合并到这些分支中,或者这些分支多次合并回master,则会出现故障。这就是为什么我在使用这样的流时使用标记,当我将dev/2.6合并回master时,我会将提交标记为v2.6.1,如果我再次合并v2.6.2等。通过这种方式,我可以在当前状态或标签与前一个标签之间执行git short-log s,以查看添加了什么。

相关问题