我有一个 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.6 到 main 的拉取请求。
我的问题是,在通过一个pull request将 dev/2.6 合并到 main 之后,是否可以使用
git log
命令来查找 dev/2.6 和 main 之间提交的交集?
比如说我试过
git --no-pager log --oneline main..dev/2.6,
但此命令仅显示提交中的差异。我需要的是记录在 dev/2.6 中所做的所有提交,这些提交存在于main中,但不存在于 dev/2.4、dev/2.5 等中。是否有git log语法用于显示仅在dev/2.6和main中存在的提交列表的输出??
谢谢预付款
1条答案
按热度按时间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
或任何您喜欢的日志机制。
这意味着将
main
和dev/2.6
记录在一起,这样您就可以看到它们在哪里发散,在哪里合并,以及之后是否发散。我认为更好的方法是使用
git shortlog dev/2.6 ^dev/2.5
或git shortlog dev/2.6 ^origin/master
,或者用dev/2.6
中断的fork点替换origin/master。这将分别显示dev/2.6
上没有的dev/2.5
或master
。如果您多次将
master
合并到这些分支中,或者这些分支多次合并回master,则会出现故障。这就是为什么我在使用这样的流时使用标记,当我将dev/2.6
合并回master
时,我会将提交标记为v2.6.1
,如果我再次合并v2.6.2
等。通过这种方式,我可以在当前状态或标签与前一个标签之间执行git short-log
s,以查看添加了什么。