【问题标题】:How to copy current state of master branch into another branch?如何将主分支的当前状态复制到另一个分支?
【发布时间】:2017-02-15 13:55:54
【问题描述】:

已在此页面上尝试过接受的答案:How to merge the current branch into another branch

但问题是,master 不需要任何更改,我创建了分支:git checkout -b mybranch

当我尝试git push self mybranch:master

它告诉我一切都是最新的。但我知道。我只想将分支复制到另一个分支,以便它具有主分支的当前状态。以后再也不会碰它了。

我以后只会从主分支分支出来。这个其他分支永远不会被真正触及。但是我需要将其存档,以便在需要时可以切换到该分支并随时将其带回来...

如何在不创建新仓库的情况下复制 master 分支?

【问题讨论】:

    标签: git github merge


    【解决方案1】:

    answer by Zoli Szabo 中所述,您应该使用tags 来标记历史中不应移动的事件。要创建一个标签,只需提供它的名称和它应该指向的提交。如果您提供分支名称而不是提交哈希,则标签将指向该分支的当前提示提交。

    git tag mytag branch
    git tag mytag 123ab45ef
    

    但要回答您的问题,如果您希望您的分支反映 master 的当前状态,您有以下几种选择:

    • 强制更新分支:git branch -f mybranch master,然后推送分支
    • 将您想要的状态推送到远程存储库中的分支:git push origin master:mybranch-f,如果您需要强制更新)。小心,因为这可能会给其他人带来问题
    • 将分支与ours 策略(-s ours)合并,以创建具有所需状态的新提交。然后推送到远程仓库。

    如果您只是想更新本地存储库,请合并分支(如果我正确理解您的问题,应该会导致快进),或者进行本地推送。

    • 合并:git checkout master; git merge mybranch
    • 本地推送:git push . mybranch:master

    推送类似于快进合并(目标和目标分支切换)。

    任你选:)

    【讨论】:

    • git branch -f original:master 这给了我一个无效的分支 original:master 但原始分支存在。 git branch -a 在那里显示原件。
    • @SolomonClosson:对不起,那个冒号不应该在那里。它应该是一个空格字符。
    • 谢谢,我刚刚使用了一个标签,希望它能达到我想要的效果。
    • 我不得不git push --force 因为master 分支是几个(没用的)commits 后面。
    【解决方案2】:

    要标记历史上的特定点,您应该使用tags,而不是“废弃”的分支。

    【讨论】:

    • 同意。一个标签更好地表达了提交链没有处于积极的开发中。
    【解决方案3】:

    您不能有两个指向不同提交的主分支。一个分支只指向一个提交。要保存此时 master 分支所在的位置,请在其上创建一个标签,或创建一个新分支。您可以将一个分支保存在名称 MYSUBDIR/master 下,并将另一个分支保存在名称 MYOTHERSUB/master 下。

    在远程“self”上创建一个分支“MySave/master”,其提示与本地 mybranch 相同。

    git push self mybranch:MySave/master
    

    当然,假设您具有适当的权限。您可以通过以下方式查看两个分支的状态:

    git log --oneline --decorate -9 mybranch self/MySave/master
    

    “self/MySave/master”是您的远程跟踪副本,要获取最新的,请执行以下操作:

    git fetch self self/MySave/master
    

    更新“self/MySave/master”(但不是您本地的“mybranch”,用于拉取)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 2016-05-12
      • 2023-03-05
      • 2022-11-25
      • 2015-12-10
      • 2013-11-04
      • 1970-01-01
      相关资源
      最近更新 更多