【问题标题】:Delete local "remote branch" without deleting remote branch?删除本地“远程分支”而不删除远程分支?
【发布时间】:2016-07-08 16:10:08
【问题描述】:

所以我的遥控器上有一个名为 feature1 的分支。我试图通过以下方式创建一个本地分支来跟踪它:

git checkout -b origin/feature1

但现在git branch 向我展示了这个:

master    
*origin/feature1

我知道这是不对的。它应该只是本地的feature1,而不是origin/feature1

如何在保持远程分支完好无损的情况下删除它并正确设置它?我做错了什么?

【问题讨论】:

    标签: git


    【解决方案1】:

    你的命令应该是:

    git checkout -b feature1 origin/feature1
    

    上面写着“结帐并创建分支feature1,并让它跟踪origin/feature1”。您所做的是创建了一个字面上名为 origin/feature1 的分支,它不跟踪任何远程分支。

    要修复它,请切换到另一个分支:

    git checkout master
    

    然后删除它:

    git branch -d origin/feature1
    

    【讨论】:

    • 哦,对了 git branch -d etc 不会删除远程分支。完全忘记了。
    • 问题....git branch -d origin/fea 不会自动填充该分支名称......
    • @Aerovistae 我也有这个问题,也许 git 与命名混淆(并查看本地遥控器)。但是,手动编写它确实有效(在回答之前在本地测试)。
    • 确认!作品。谢谢。
    【解决方案2】:

    您在这里所做的是创建一个名为origin/feature1 的普通本地分支。 Git 对此非常满意——在内部,它的名字是 refs/heads/origin/feature1,这清楚地表明它是一个普通的本地分支——尽管它让用户非常困惑,他们认为它看起来像一个远程跟踪分支。

    作为Rob already answered,您可以简单地删除具有假名的本地分支。或者,您可以重命名它,这样就不必先下车:

    $ git branch
      master
    * origin/feature1
    $ git branch -m feature1
    $ git branch
      master
    * feature1
    

    请注意,实际的远程分支具有以refs/remotes/ 开头的完整内部名称,您可以运行git symbolic-ref HEAD 以查看当前分支的完整内部名称(如果您了解@987654327,则可能不会那么混乱@ 与 refs/remotes/ 的东西)。

    【讨论】:

      【解决方案3】:

      删除一个分支就这么简单:

      git branch -D <branch name>
      

      但你也可以只重命名旧的:

      我知道这是不对的。它应该只是本地的 feature1,而不是 origin/feature1。

      git branch -m <new_name>
      

      这是所有命令的完整截图

      【讨论】:

        【解决方案4】:

        列出所有分支

        git branch
        

        -d/-D

        在本地删除一个分支..

        git branch -d branchName
        

        无论合并状态如何,删除分支

        git branch -D branchName
        

        删除远程分支

        git push origin --delete branchName
        

        -d 标志

        这将删除本地分支。但它会考虑 git 状态。即,您必须先提交所有更改。

        -D 标志:

        这是强制 git 删除本地分支,而不管您尚未暂存或提交的当前更改。基本上两者都可以

        --delete --force
        

        推送--删除:

        要删除不能使用分支的远程分支(当使用 -d/-D 标志时,您正在使用 branch 命令)。您需要推送它而不是包括远程名称(在这种情况下为来源)。

        要获取源名称,运行

        git remote
        

        【讨论】:

          猜你喜欢
          • 2018-09-29
          • 1970-01-01
          • 2021-08-22
          • 2021-12-11
          • 2020-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-02
          相关资源
          最近更新 更多