如何在我们的 GOGs 存储库中创建一个旧提交的分支,推送它以创建标签,然后将更改合并到 Master 而不会丢失我们的更改?

How to Create a branch off an old commit in our GOGs repository, push it to make a tag, then merge the change onto Master without losing our changes?

我们的团队在遗留应用程序上工作,规模相对较小,而且对使用 GIT 存储库控制我们的源代码还很陌生。我们没有 Git Master,而且我们真的没有任何方法来组织我们的更改。

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

我们不想将我们正在进行的更改推送到下一个版本 - 所以理想情况下我们希望:

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

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

你描述的基本正确。

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

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