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