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

时间:2018-05-24 14:45:51

标签: bash git

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

合并时我需要的是:

  1. 找出自上次合并以来的所有提交消息。
  2. 在我的合并中包含所有这些消息。
  3. 因此,例如,合并发生 - 并且由于此合并有3个提交:

    承诺A - 做了一件事 提交B - 做了B的事 提交C - 做了C的事情

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

    "将BranchA合并到BranchB:

    提交A - 做了一件事

    提交B - 做了B的事情

    提交C - 做了C的东西"

    有人知道如何在git bash中执行此操作吗?

    使用VIM

2 个答案:

答案 0 :(得分:2)

您可以使用类似

的组合日志消息
git log --oneline BranchB..BranchA

您要将BranchA合并到BranchB;这将给出从BranchA可以到达的每个提交的一行摘要,但 可以从BranchB到达 - 也就是说,其更改将合并到{{}的提交1}}。

所以你可以接近

BranchB

(假设这不会导致快进;如果需要,您可以使用git merge -m "$(git log --oneline BranchB..BranchA)" BranchA 强制解决问题。)

但这会使--no-ff部分失效。因此,如果这是一个问题,您可以改为编写脚本merge-msg.sh

Merged BranchA into BranchB

然后使用

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

您可以使用git merge -m "$(merge-msg.sh BranchA BranchB)" BranchA 代替HEAD,但这样会再次丢失提交消息中的信息(当前分支名称)。

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

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

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

git alias

2)创建别名

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

然后

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

会将git mymerge feature master 合并到feature

答案 1 :(得分:0)

git merge有一个--log选项。

请参阅documentation