【发布时间】:2012-02-26 19:33:59
【问题描述】:
我们目前正在使用 git,我试图提出一个合理的工作流程供人们使用,但目前有一个问题我不确定如何解决。如果在合并回主分支时发生冲突,我们会丢失压缩提交消息中的历史记录,这是我们想要保留的内容。目前的工作流程如下:
-
git pull- 这应该在 master 分支上完成。 -
git checkout -b TASK-ID- 为任务创建一个新分支。 TASK-ID 类似于 TASK-101 - 处理任务并根据需要提交更改。
- 完成任务后,
git checkout master -
git pull- 获取自上次拉取以来所做的任何更改。 - 解决所有冲突并确保主版本中的当前版本编译。
-
git merge --squash TASK-ID- 合并时将分支中的所有提交视为一个提交。 -
git commit- 向提交消息添加任何附加信息,特别是 TASK-ID。需要注意的是,来自分支的所有提交消息都包含在内,因此在合并发生时它们不会丢失。 -
git push- 将更改推送回服务器。
一些背景知识:目前我们在这方面工作的人并不多,我们不会经常看到冲突。压缩提交的原因是我们对每个任务都有一个提交。这样,如果我们的 Bamboo 服务器发现构建存在问题,我们可以轻松地将其绑定到任务并让开发人员修复它。此外,它使主历史记录更清晰,因为至少我倾向于进行大量提交。是的,我知道如果我们开始与更大的团队打交道,这可能需要改变,但那是在未来。
现在,我确实意识到,在这种情况下,我们可以在合并后简单地进行拉取,但这并不能完全解决问题,因为我们的开发人员可能不得不临时切换分支来修复发布或处理更高的优先级。我希望看到的是我们如何在不丢失压缩合并中的提交历史的情况下实现我现在得到的结果。我已经研究了几种使用 rebase 的解决方案,但没有一个是我想要的。
所以,总结一下,我的要求是:
- 在 master 中清除历史记录
- 可以在单次提交的消息中看到分支的变化
- 在提交更改之前,需要编辑压缩提交的提交消息以在其中包含任务 ID。 (修改也可以)。
【问题讨论】: