【问题标题】:Collect commit messages from all previous commits during merge for changelog在合并期间从所有以前的提交中收集提交消息以获取更改日志
【发布时间】:2019-01-09 20:51:43
【问题描述】:

我有一个主分支和一个特性分支。功能分支是主分支之前的几个提交,我想将功能分支合并到主分支中。我不打算--squash,也不想rebase,因为我喜欢保留历史。

我喜欢总结合并的提交消息中的变化,因为功能分支历史可能会变得复杂,对我来说,一个好的起点是复制和编辑来自功能分支的各种提交的所有提交消息因为最后一次合并

我隐约记得在某处读过 git 可以为我编译这些消息,但我不记得我在哪里读到或如何去做。

抱歉,如果这是重复的,但 Google 和 SO 的多次搜索都未能找到此问题。

编辑:基本上我要做的是为版本之间的所有更改构建一个更改日志。

【问题讨论】:

  • 使用git shortlog?
  • Rebase 将保持所有提交完整。你用 github 吗?使用 github,我创建了一个 Pull Request 并合并到 master。合并时,GH 提供“压缩并提交”或“保留历史记录”的选项。根据需要选择并合并。
  • @MohanaRao 当你在 GitHub 上“压缩并提交”时,你不会丢失合并本身的历史,因为它在技术上不是合并吗?
  • 是的,在您的情况下,您选择其他选项(不要挤压)。
  • 我找到了这个链接,希望对你有帮助。 help.github.com/articles/about-pull-request-merges/…

标签: git git-merge


【解决方案1】:

我依稀记得在某处看到 git 可以为我编译这些消息

也许通过git rebase, as shown here:不要通过rebase(取消它),而是复制粘贴rebase期间显示的聚合提交消息主题。

否则,您无法手动发送这些消息(如described here)。

或使用antham/chyle 之类的工具从您的历史记录中获取这些提交消息。

【讨论】:

  • 我认为 rebase-and-cancel 选项一定是我记得的。不过,chyle 选项很有趣。我得去看看。
【解决方案2】:

一个

git log --oneline HEAD ^master

将在git rebase -i master 中创建这样的输出。

也许通过| cat 删除彩色注释。

【讨论】:

    【解决方案3】:

    --logparameter for merge 就是您要找的:

      --log[=<n>], --no-log
           In addition to branch names, populate the log message with one-line
           descriptions from at most <n> actual commits that are being merged.
           See also git-fmt-merge-msg(1).
    

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多