我的git常规工作流程是创建一个新的功能分支,进行一些工作并频繁提交,然后在功能可用和/或稳定时将其合并回开发分支。
通常,当我执行git merge --squash feature-branch
时,我会得到一个很好的“以下内容的压缩提交”消息,其中包含来自该分支的所有提交消息。
然而,如果有任何合并冲突(比如我完成并合并了另一个功能,同时在这个功能上工作),我似乎会失去分支的所有提交消息。自动填充的提交消息解决了冲突,但没有提交消息。我的提交消息去哪里了?我能够找回它们吗?
是的,您可以获取到合并压缩提交的信息。它存储在.git/SQUASH_MSG文件中。
您可以使用以下命令将其作为模板:
git commit -t .git/SQUASH_MSG
.git/SQUASH_MSG
:) - Michael Miorgit commit --file .git/SQUASH_MSG
,它创建了提交消息,列出了压缩提交中的所有提交。 - Abdullgit rebase master topic
使用 Git,没有真正的丢失。可以使用以下命令获取功能分支上提交的列表:
git cherry feature-branch
然后只需将其导入 git cat-file
:
git cherry feature-branch | cut -f2 -d' ' | git cat-file --batch
不过你需要清理一下输出结果。我不知道有更好的自动化方法。
rebase --interactive
进行清理,然后进行普通合并 - 这样就不会丢失历史记录。 - Cascabel