【问题标题】:How to push changes from branch A to branch B without removing new changes from B branch git (no merge)如何在不从 B 分支 git 中删除新更改的情况下将更改从分支 A 推送到分支 B(不合并)
【发布时间】:2017-02-22 11:45:01
【问题描述】:

我很长时间以来都在使用 git。现在面临的挑战有点令人困惑。我的问题是管理具有不同版本的应用程序的存储库。

我正在开发一个应用程序,我必须在其中发布应用程序的几个模块,并且我必须继续开发后续模块,而无需等待先前模块的测试问题。所以我为每个模块创建了不同的分支并处理它们,将旧分支留在该模块的更改完成的位置。没关系,但问题是当测试人员在旧模块上提出问题时,我将不得不修复旧分支上的那些特定问题,并且这些修复还应该反映在新的工作分支和源代码的未来分支上。而且我将不得不提供一个修复旧分支的构建,直到旧分支任务目标没有来自新分支的新更改。

我正在使用源树 mac 应用程序来管理我的存储库。有什么办法可以完成这个任务。我现在正在做的是同时修改 2 个存储库的源代码以修复单个问题,我担心如果我必须为 3 个存储库执行此操作,这太可怕了,因为我也即将完成第二个模块。我希望一定有办法。

【问题讨论】:

    标签: git bitbucket branching-and-merging sourcetree


    【解决方案1】:

    使用樱桃挑选。

    branch_a : A - B - C <- tip
    branch_b : D - E - F <- tip
    

    要从 branch_b 到 branch_a 选择提交 E,请执行以下操作:

    git checkout branch_a
    git cherry-pick E
    

    你最终会得到:

    branch_a : A - B - C - E' <- HEAD
    branch_b : D - E - F <-tip
    

    其中E'E 相同,但位于C 之上。

    【讨论】:

    • 这似乎是解决方案。所以我每次都必须通过在旧的 branch_b 中推送一些东西时检查 branch_a 来做到这一点?
    • 好吧,如果分支之间没有自然关系,那么您可以将一个提升到另一个,那么我想您将不得不挑选您真正想要移至分支的提交跨度>
    • 我试过了,看起来很简单,但我们必须跟踪它。
    【解决方案2】:

    您需要使用 https://git-scm.com/docs/git-cherry-pick 挑选提交

    【讨论】:

    • 我已经阅读了上面链接页面中的描述和一些细节。我不知道如何用不同的分支来做到这一点。你能解释一下吗?
    猜你喜欢
    • 2016-03-07
    • 2016-11-20
    • 2020-10-11
    • 2020-08-09
    • 2022-01-13
    • 1970-01-01
    • 2013-12-01
    • 2020-07-30
    • 2018-10-24
    相关资源
    最近更新 更多