合并冲突破坏了我的提交信息,同时压缩提交。

14

我的git常规工作流程是创建一个新的功能分支,进行一些工作并频繁提交,然后在功能可用和/或稳定时将其合并回开发分支。

通常,当我执行git merge --squash feature-branch时,我会得到一个很好的“以下内容的压缩提交”消息,其中包含来自该分支的所有提交消息。

然而,如果有任何合并冲突(比如我完成并合并了另一个功能,同时在这个功能上工作),我似乎会失去分支的所有提交消息。自动填充的提交消息解决了冲突,但没有提交消息。我的提交消息去哪里了?我能够找回它们吗?


为什么要压缩提交历史呢?如果您认为自己的提交太频繁和混乱,可以使用 rebase --interactive 进行清理,然后进行普通合并 - 这样就不会丢失历史记录。 - Cascabel
3个回答

8

是的,您可以获取到合并压缩提交的信息。它存储在.git/SQUASH_MSG文件中。

您可以使用以下命令将其作为模板:

git commit -t .git/SQUASH_MSG

2
由于某些原因,这对我直接来说没有起作用,但感谢您指向了.git/SQUASH_MSG :) - Michael Mior
我运行了命令 git commit --file .git/SQUASH_MSG,它创建了提交消息,列出了压缩提交中的所有提交。 - Abdull

4

在那个点上,你绝对不需要进行Squash合并 - 它将是一个快进。 - Cascabel

1

使用 Git,没有真正的丢失。可以使用以下命令获取功能分支上提交的列表:

git cherry feature-branch

然后只需将其导入 git cat-file

git cherry feature-branch | cut -f2 -d' ' | git cat-file --batch

不过你需要清理一下输出结果。我不知道有更好的自动化方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接