git refname'origin / master'是不明确的 [英] git refname 'origin/master' is ambiguous

查看:1544
本文介绍了git refname'origin / master'是不明确的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个跟踪几个远程分支的git仓库:

  $ git branch -a 
* master
遥控器/ git-svn
遥控器/原产地/主控制器
遥控器/后备箱

当我尝试设置默认值时,出现以下错误:

  $ git branch --set-upstream -to = origin / master master 
警告:refname'origin / master'不明确。
致命的:模糊的对象名称:'origin / master'。

我想删除一些远程主分支,但主引用仍然存在。如何删除它们以便能够将默认上游分支设置为 origin / master

  $ git show-ref master 
cba97a58c99743c355b569bbf35636c8823c2d96 refs / heads / master
6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs / origin / master
d83f025cd3800ed7acd76b2e52ae296e33f1cd07 refs / original / refs / heads / master
cba97a58c99743c355b569bbf35636c8823c2d96 refs / remotes / origin / master


解决方案

git branch -a 显示您有一个名为 origin / master 的远程追踪分支。完美正常。

然而, git show-ref master 的输出包含

  6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs / origin / master 

这表明你很可能运行了类似下面的低级命令:

  git update-ref refs / origin / master master 

该命令创建一个分支(指向与 master )称为 origin / master ,但直接位于 refs / 之外,即外部 refs / heads / 命名空间,其中本地分支通常存在。你的意思是这样做吗?



这样的分支不会被 git branch -a 列出。然而,Git会感到困惑,因为它看到两个分支的refnames以 origin / master 结尾:


  • refs / remotes / origin / master ,您的远程追踪分支和
  • 您可以在 refs / heads / 之外创建(无意)创建的本地分支。

  • ul>

    解决方案



    如果 不是则表示创建 refs / origin / master



    简单地删除它:

      git update-ref -d refs / origin / master 

    然后,当你尝试设置 master 的上游时,Git会遵守。



    如果你的意思是创建 refs / origin / master



    为了避免歧义,只需指定完整您希望设置为的分行的名称 master 的上游:

      git branch --set-upstream-to = re fs / remotes / origin / master master 






    想法,下面是一些代码,它重现了我的一个GitHub仓库中的情况:

      $ cd〜/ Desktop 
    $ git clone https://github.com/Jubobs/gitdags&& cd gitdags

    $ git update-ref refs / origin / master

    $ git branch -a
    * master
    remotes / origin / HEAD - > ;原产地/大师
    遥控器/原产地/主人

    $ git show-ref主人
    15b28ec22dfb072ff4369b35ef18df51bb55e900参考资料/首页/主人
    15b28ec22dfb072ff4369b35ef18df51bb55e900参考文献/ origin / master
    15b28ec22dfb072ff4369b35ef18df51bb55e900 refs / remotes / origin / HEAD
    15b28ec22dfb072ff4369b35ef18df51bb55e900 refs / remotes / origin / master

    $ git branch --set-upstream-to = origin / master master
    warning:refname 'origin / master'含糊不清。
    致命的:模糊的对象名称:'origin / master'。

    $ git update-ref -d refs / origin / master
    $ git branch --set-upstream-to = origin / master master
    设置分支主机来跟踪远程分支主从原产地。


    I have a git repository that is tracking several remote branches:

    $ git branch -a
    * master
      remotes/git-svn
      remotes/origin/master
      remotes/trunk
    

    When I try to setup a default one I get the following error:

    $ git branch --set-upstream-to=origin/master master
    warning: refname 'origin/master' is ambiguous.
    fatal: Ambiguous object name: 'origin/master'.
    

    I would like to kremove some of the remote master branches but the master references are still there. How can I remove them to be able to set the default upstream branch to origin/master?

    $ git show-ref master
    cba97a58c99743c355b569bbf35636c8823c2d96 refs/heads/master
    6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master
    d83f025cd3800ed7acd76b2e52ae296e33f1cd07 refs/original/refs/heads/master
    cba97a58c99743c355b569bbf35636c8823c2d96 refs/remotes/origin/master
    

    解决方案

    The output of git branch -a shows that you have a remote-tracking branch called origin/master. Perfectly normal.

    However, the output of git show-ref master contains

    6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master
    

    which indicates that you most likely ran something like the following low-level command:

    git update-ref refs/origin/master master
    

    This command creates a branch (pointing at the same commit as master) called origin/master, but living directly under refs/, i.e. outside the refs/heads/ namespace, where local branches normally live. Did you mean to do that?

    Such a branch won't get listed by git branch -a. However, Git gets confused because it sees two branches whose refnames end with origin/master:

    • refs/remotes/origin/master, your remote-tracking branch, and
    • refs/origin/master, the local branch that you created (by accident) outside refs/heads/.

    Solution

    If you did not mean to create refs/origin/master

    Simply delete it:

    git update-ref -d refs/origin/master
    

    Then, there won't be any ambiguity, and Git will comply when you try to set master's upstream.

    If you did mean to create refs/origin/master

    To avoid ambiguity, simply specify the full refname of the branch you wish to set as master's upstream:

    git branch --set-upstream-to=refs/remotes/origin/master master
    


    To fix ideas, here is some code that reproduces the situation in one of my GitHub repos:

    $ cd ~/Desktop
    $ git clone https://github.com/Jubobs/gitdags && cd gitdags
    
    $ git update-ref refs/origin/master
    
    $ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
    
    $ git show-ref master
    15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/heads/master
    15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/origin/master
    15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/HEAD
    15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/master
    
    $ git branch --set-upstream-to=origin/master master
    warning: refname 'origin/master' is ambiguous.
    fatal: Ambiguous object name: 'origin/master'.
    
    $ git update-ref -d refs/origin/master
    $ git branch --set-upstream-to=origin/master master
    Branch master set up to track remote branch master from origin.
    

    这篇关于git refname'origin / master'是不明确的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆