我使用git的常用工作流程是创建一个新的功能分支,使用频繁的提交做一些工作,然后在功能正常工作和/或稳定时合并回开发分支。
通常,当我这样做 git merge --squash feature-branch
,我得到一个很好的“压缩以下提交”消息,自动填充来自功能分支的所有提交消息。
但是,如果存在任何合并冲突(比如说我完成并合并了另一个功能),我似乎丢失了来自分支的所有提交消息。自动填充的提交消息填充冲突,但不填写提交消息。我的提交消息在哪里?我可以让他们回来吗?
我使用git的常用工作流程是创建一个新的功能分支,使用频繁的提交做一些工作,然后在功能正常工作和/或稳定时合并回开发分支。
通常,当我这样做 git merge --squash feature-branch
,我得到一个很好的“压缩以下提交”消息,自动填充来自功能分支的所有提交消息。
但是,如果存在任何合并冲突(比如说我完成并合并了另一个功能),我似乎丢失了来自分支的所有提交消息。自动填充的提交消息填充冲突,但不填写提交消息。我的提交消息在哪里?我可以让他们回来吗?
这不能直接回答您的问题,但您应该能够首先避免冲突。
考虑做一个
git rebase master topic
在执行合并之前。本页的DESCTIPTION部分 http://git-scm.com/docs/git-rebase 应该是有帮助的。这也可以避免壁球的需要,因为交互式底板将允许你压缩你选择的提交。
编辑: 也可以看看: 在git中,merge --squash和rebase之间有什么区别?
是的,您可以获取壁球提交消息。它存储在.git / SQUASH_MSG中。
您可以使用以下命令将其用作模板:
git commit -t .git/SQUASH_MSG
git没有真正失去任何东西。可以使用以下命令获取功能分支上的提交列表:
git cherry feature-branch
然后只需将其管道 git cat-file
:
git cherry feature-branch | cut -f2 -d' ' | git cat-file --batch
您需要清理输出。我不知道如何更好地自动化它。