gpt4 book ai didi

git - 如果使用 --no-commit、 merge 失败或中止,如何生成 git merge --log 消息?

转载 作者:行者123 更新时间:2023-12-03 09:22:04 28 4
gpt4 key购买 nike

我正在执行两个分支的 git merge 并希望包含 --log 开关,但忘记了。我中止了提交消息编辑器并重试。

现在我处于存在 MERGE_HEAD 的情况,因此无法重新运行 merge ,并且系统指示我“请在 merge 之前提交更改。”

当提交完成 merge 时,我找不到创建与从 merge --log 开关获得的相同消息的选项。

问:删除 .git/MERGE_HEAD 然后再次 merge 的解决方案是,还是有 git commitgit fmt-merge-msg 的某种组合 会生成类似日志的消息?

我认为这可能是一个常见问题,但我无法通过 git-smc、Google 或 SO 找到解决方案。

最佳答案

一般来说,如果您开始 merge 并最终决定不想要它,只需使用 git merge --abort 。 (然后您可以使用不同的选项重新启动它。)

如果您实际上已经完成了一些工作,那么您可以收集提交主题消息(例如,按照您的建议,使用 git fmt-merge-msg ,或仅使用 git log --format=' %s' -n <num> branch )并将它们放入最终 merge 中当你git commit时你所做的 merge 。

我从未使用过git fmt-merge-msg --log之前,但它似乎想要在标准输入(或来自文件)上出现一系列 git fetch 形式的行通常离开 FETCH_HEAD :

  • 原始 SHA-1
  • 两个文字选项卡
  • 分支机构名称

因此(在我的测试中,在分支 example 上时):

$ echo $(git rev-parse master)$'\t\t'"'master'" | git fmt-merge-msg --log
Merge 'master' into example

* master:
[four commits listed here, in my case]

一旦你有了像这样的基本提交文本,你就可以使用提交的-F <file>从文件中读取它的选项,或 -F -从标准输入读取它。

(注意:git merge --log master 生成的消息略有不同,即:

Merge branch 'master' into example

* master:
[same four commits listed]

如果我更改echo命令说 branch 'master'第一行匹配,但随后以星号为前缀的行显示 branch 'master' .)

关于git - 如果使用 --no-commit、 merge 失败或中止,如何生成 git merge --log 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28641848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com