【问题标题】:How to do a "git checkout -b <branchname>" from a remote tag如何从远程标签执行“git checkout -b <branchname>”
【发布时间】:2011-09-27 16:39:26
【问题描述】:

我正在尝试从远程标记创建一个分支,但似乎没有办法做到这一点。当我尝试时

git checkout -b test origin/deploy

origin 是远程,deploy 是我想签出的标签,但我得到了

fatal: git checkout: updating paths is incompatible with switching branches.
Did you intend to checkout 'origin/deploy' which can not be resolved as commit?

更新: 我才发现

git fetch --all -t

对我来说不能正常工作。当它下载所有分支时,它不会下载所有标签,所以当我签​​出部署时,它是旧标签。现在我执行

git fetch --all && git fetch -t

这样当我基于标签创建新分支时

git checkout -b test deploy

新分支与上次部署是最新的。

【问题讨论】:

    标签: git git-branch


    【解决方案1】:

    我不确定您是否可以直接执行此操作。您可能无法进行提取然后结帐:

    git fetch origin
    git checkout -b test tag-name
    

    顺便说一句,我不建议使用像“deploy”这样的标签名称。

    【讨论】:

    • 好吧,现在我总是在结帐前执行“git fetch --all -t”,但在某些情况下,从标签创建的分支似乎指向旧部署而不是最后一个。顺便说一句,你为什么不使用“部署”这个名字?
    • @Sergi,标签旨在保持固定,但像“部署”这样的名称意味着您将经常更改它。最好使用分支来标记随时间变化的开发线,并让您的标签是特定版本,例如“1.0”。
    • @Joost,哦,那别担心。我在部署时总是创建两个标签,一个带有版本名称,另一个名为 deploy,每次我进行新部署时都会覆盖它。这样,其他开发人员可以从部署分支的最后一个好点开始分支。知道为什么有时我会得到指向旧部署的分支吗?难道是“git fetch --all -t”没有按预期工作?
    • 不知道重复标签是怎么解决的。它的隐含标签应该是固定的和唯一的。我发现使用带有特定版本标签的“部署”分支效果很好;这样你就有了一些始终指向当前版本(该分支的 HEAD)和对过去版本的固定引用(带有版本号或日期的标签)的东西。
    • @Sergi,你可以随心所欲。但是 Git 文档非常明确地指出不应更改或重用标签这一事实。来自 git-tag 文档:“如果有人从您那里获得了发布标签,您不能只通过更新自己的标签来更改他们的标签。这是一个很大的安全问题,因为人们必须能够信任他们的标签名称. 如果你真的想做疯狂的事,你需要坦白承认,告诉别人你搞砸了。你可以通过发布一个非常公开的声明来做到这一点:[...example given]"跨度>
    【解决方案2】:

    我不是 git 大师,但我以前用过类似的东西,它似乎运行良好:

    git pull (or fetch, just need to make sure you are updated)
    git checkout -b test remotes/origin/deploy
    

    【讨论】:

    • 这对我不起作用(MacOs X,远程托管在 github)我得到:致命:无法更新路径并同时切换到分支 '6.2.3-ga4'。跨度>
    • 确保您尝试跟踪的分支存在。即首先做一个 git fetch,或 git pull,或 git 远程更新等。
    【解决方案3】:

    你需要跑

    git pull
    git checkout -b <new-branch-name> remotes/origin/<source-branch-name>
    

    【讨论】:

      【解决方案4】:

      列出所有标签

      git fetch
      git tags -l 
      

      创建一个指向标签的本地分支

      git checkout tags/<tag_name> -b <branch_name>
      git checkout -b <branch_name> tags/<tag_name>
      

      【讨论】:

        猜你喜欢
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        相关资源
        最近更新 更多