【问题标题】:push a specific commit from one remote branch to another remote branch将特定提交从一个远程分支推送到另一个远程分支
【发布时间】:2013-05-03 10:59:58
【问题描述】:

我有 2 个远程分支,devrls。我们目前正在开发dev 分支。我的 rls 分支是空的/未触及。我想将特定的提交(sha-1 哈希)从 dev 移动到 rls 分支。请指导我在 Git 中做同样的事情的最佳、安全和简单的方法。

谢谢...

【问题讨论】:

    标签: git github gerrit


    【解决方案1】:

    一种方法是使用git cherry-pick,以便选择要在rls 分支上报告的确切提交。

    请参阅“Can anyone explain what git cherry-pick does?”了解更多信息。

    然后可以将rls推送到对应的远程分支。

    所以:

    1. cherry-pick local 以便有一个 rls local 分支,看起来像你想要发布的东西(推送)
    2. rls 推送到远程仓库

    【讨论】:

    • 让我再说一遍我的问题。我想将所有代码移动到从我的开发到 rls 分支的特定提交。这就像在任何时间点将代码从 dev 分支移动到 rls 分支。谢谢..
    • @user265950 当然,这就是 git cherry-pick 的用途:它可以报告一系列提交。但是,如果您希望那些提交 gone 从 dev 中获得,那么您必须进行交互式 rebase。
    • 我观察到的是,当我从一个分支选择提交到另一个分支时,它会创建一个新的 SHAID。但是当我在其他分支上使用合并时,它使用相同的 SHAID。这是怎么解释的?为什么会这样?
    • @user265950 acherry-pick 接受一个提交并在另一个分支上创建一个类似的提交,因此是新的 SHA1。如果需要合并,合并还将创建另一个(合并提交),除非它是一个胖前合并(HEAD 只是移动,没有新的提交)。简而言之:新的 SHA1 等于新的提交。
    【解决方案2】:

    如果您正在寻找 rls 作为某个任意提交处的 dev 分支的快照,您可以使用 git reset 将您的分支指针移动到您正在寻找的提交。确保在执行此操作时没有未暂存的更改。

    git checkout rls  
    git reset --hard <SHA-1 of commit in dev>
    

    示例
    如果dev 看起来像:

    A - B - C - D
    

    并且您希望 rls 看起来像:

    A - B
    

    你会的

    git checkout rls
    git reset --hard <sha-1 of B>
    

    但是,如果您想选择更具体的提交范围并将其推送到rls,则需要使用git cherry-pick 命令。

    git checkout rls
    git cherry-pick <non-inclusive-starting-SHA1>..<inclusive-ending-SHA1>
    

    【讨论】:

    • 硬重置后,我推送了更改到 rls 分支。谢谢
    【解决方案3】:

    如果您想将所有代码移动到 rls 分支的特定提交之前,请使用 git merge。例如,

    git checkout rls
    git merge [SHA1 of last commit you are interested in]
    

    【讨论】:

    • 谢谢布拉德。所以理想情况下,硬重置和合并之间有什么区别。在进行硬重置和合并后,我必须运行 push 命令。似乎合并和硬重置可以帮助我实现我需要的相同的事情。请告诉我确切的差异。
    • 也许我明白了。使用硬重置,我可以移动到任何时间点,前后移动。但随着 Merge 的发展,它只会线性地向前发展。但基本上出于我的要求,到目前为止,两者都在帮助我。这是正确的吗?
    • 最大的不同在于,通过合并,您将拉入历史中的其他提交。因此,如果您在 rls 中有其他更改,您将使用 git merge 保留它们,但使用 git reset 会丢失它们。在某些用例中两者都是必要的。
    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 2015-08-08
    • 2014-06-13
    • 2013-04-10
    • 2017-11-09
    • 2020-05-22
    相关资源
    最近更新 更多