Git Bash - 自上次合并以来的所有提交

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

有没有办法自动化合并提交消息自动填充?

合并时我需要的是:

  1. 找出自上次合并以来所有提交消息的内容。
  2. 在我的合并中包含所有这些消息。

因此,例如,合并发生 - 并且由于此合并有3个提交:

提交A - 做了东西提交B - 做了B的东西提交C - 做了C的东西

我想要显示我的合并提交消息:

“合并分支到分支:

承诺A - 做了一件事

提交B - 做了B的事

提交C - 做了C的东西“

任何人都知道如何在git bash中这样做?

使用VIM

bash git
2个回答
2
投票

您可以获得类似的组合日志消息

git log --oneline BranchB..BranchA

在哪里你将BranchA合并到BranchB;这将给出从BranchA可以访问的每个提交的单行摘要,但不能从BranchB到达 - 也就是说,其更改将合并到BranchB的提交。

所以你可以接近

git merge -m "$(git log --oneline BranchB..BranchA)" BranchA

(假设这不会导致快进;如果需要,你可以使用--no-ff强制解决问题)。

但这会使Merged BranchA into BranchB部分掉线。因此,如果这是一个问题,您可以改为编写脚本merge-msg.sh

echo Merged $1 into $2
echo
git log --oneline $2..$1

然后使用

git merge -m "$(merge-msg.sh BranchA BranchB)" BranchA

你可以使用HEAD而不是BranchB,但是那会再次丢失提交消息中的信息(当前分支名称)。

当然,您可以尝试使用git alias来减少重复输入。


更新 - 所以你想要一个别名?好吧,因为我没有太多地使用git alias,所以这可能不是最直接的方式,但是:

1)创建另一个脚本myMerge.sh并将其放在您可以访问的位置

git checkout $2
git merge -m "$(/path/to/merge-msg.sh $1 $2)" $1

2)创建别名

git config --global alias.mymerge !/path/to/mymerge.sh

然后

git mymerge feature master

feature合并到master


0
投票

git merge有一个--log选项。

documentation

© www.soinside.com 2019 - 2024. All rights reserved.