【问题标题】:How to merge previous commits如何合并以前的提交
【发布时间】:2016-10-26 22:59:33
【问题描述】:

我已经设置了 Gitlab,我正在尝试遵循此处提到的工作流程:Gitlab Production branch flow.

现在我的存储库如下所示:

我被要求仅将master 分支的commit Aproduction 分支合并。最好的方法是什么?

我应该使用git cherry-pick 命令吗?我读到我会用cherry-pick 放开版本历史。

如果我遇到这种情况,我需要将之前的提交从 master 分支合并到 production 分支,我该如何处理?

我被困在这个问题上。非常感谢任何帮助。

谢谢,

更新:从主分支我只能推送特定的提交: git push <remotename> <commit SHA>:<remotebranchname>

在这里找到答案:How can I push a specific commit to a remote, and not previous commits?

【问题讨论】:

  • A和X之间有什么关系吗?
  • 没什么。 x 是合并到生产分支的最新提交,并部署到生产服务器。实际上,在我的存储库中,提交 A 代表了一个小功能。它已经完成,但没有投入生产,我继续致力于其他功能。现在我只想将功能 A 推送到生产环境中。
  • 那么您可以简单地合并 A 提交。实际上,给定的答案就是这样。
  • cherry-pick?我想避免这种情况。我找到了另一种方法:git checkout -b branch_x commit_hash。然后我可以将 branch_x 与生产合并并删除 branch_x。我做得对吗?

标签: git deployment gitlab git-flow git-cherry-pick


【解决方案1】:

如果您特别希望在选择提交中进行更改,那么樱桃采摘是可行的。当您需要应用的提交没有按顺序发生时,这是最有益的。就个人而言,我不建议您在主/生产分支上执行此操作,因为这不是一个好的长期发布策略。

我的建议是基于 git flow,我知道这与 GitLab 的方法有些不同。

如果这些是实际发布,请考虑遵循发布分支工作流程,在这种情况下,您在提交 A 时创建发布分支,然后合并到生产中。

如果这些是需要一些提交但不是全部提交的错误修复/修补程序(需要挑选),您可以从生产分支创建一个修补程序分支,先挑选您需要的提交到该分支,然后在完成测试时将其合并回生产中。如果在该分支中应用了任何额外的更改或提交,则它们也需要合并回您的开发分支中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-05
    • 2011-09-04
    • 2011-09-05
    • 2015-08-29
    • 2016-06-12
    • 2021-11-21
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多