首页 > 解决方案 > 如何从我们的 GOG 存储库中的旧提交创建一个分支,将其推送以制作标签,然后将更改合并到 Master 上而不丢失我们的更改?

问题描述

我们的团队致力于一个遗留应用程序,并且相对较小,并且在使用 GIT 存储库来控制我们的源代码方面是新的。我们没有 Git Master,我们真的没有办法让我们的更改保持井井有条。

结果,我们在成功发布后将一些更改推送到我们的 Master 分支 - 只是发现该版本现在需要热修复。

我们不想推动我们正在为下一个版本所做的更改 - 所以理想情况下,我们希望:

  1. 让一个人从 GOG 中提取最后一次提交(带有我们发布的标签)
  2. 更改代码以修复生产中的错误
  3. 推送更改并创建一个标签,以便我们的发布团队可以部署它
  4. 将该更改合并到我们的 Master 分支,这样我们的下一个版本的工作不会丢失,但会应用修复的更改

这是我们第一次尝试对代码进行实时修复——我已经看到了一些建议,但其中大多数都涉及基于尚未推送的开发人员分支。作为一个已经将更改推送到 Master 并希望将修复应用于旧推送的团队,我们能做些什么?

标签: gitgogs

解决方案


你描述的基本正确。

  1. 确定现在在生产中的提交。假设它是abc123f. 它也可以是与提交相同的标签(提交、分支、标签 - 都是 refs。分支是移动目标,但提交和标签是不可变的)。
  2. 在 repo 中,检查提交:git checkout abc123f
  3. 创建您的修补程序分支: git checkout -b hotfix-branch
  4. 进行更改、测试和提交。
  5. 标记您最终的提交并推送标记
  6. 给发布团队打标签
  7. git checkout master; git fetch --all; git pull获得最新的主人
  8. git merge hotfix-branch随后git push将添加修补程序并将其推送到上游主站。

请记住,您始终可以使用git diff比较分支来检查您的工作并进行验证。我经常这样做,您也应该这样做,因为对您的更改充满信心是版本控制的主要好处!8


推荐阅读