git获取到不同的本地远程refspec

问题描述 投票:1回答:1

我的远程起源只有主分支。

然后我做了:

git fetch origin refs/heads/master:refs/remotes/origin/master2

结果我得到了:

* [new branch]      master     -> origin/master2

这似乎没事。

它显示为与主站的远程跟踪分支:

bash$ git branch -r
origin/HEAD -> origin/master
origin/master
origin/master2

但是master2显示为:

bash$ git remote show origin
  Remote branches:
master                      tracked
refs/remotes/origin/master2 stale (use 'git remote prune' to remove)

I.我的第一个问题是为什么master2显示为陈旧?我能够获取它(并创建它作为我的本地远程跟踪),我希望它将映射到远程源/主?

II。第二个问题是我必须做的事情:

bash$ git branch -r -d origin/master2

删除它并在尝试通过提供完整的refspec时出错:

bash$ git branch -r -d refs/remotes/origin/master2
error: remote-tracking branch 'refs/remotes/origin/master2' not found.

我检查了git-branch的人,发现分支名称没有什么特别之处:

<branchname>
       The name of the branch to create or delete. The new branch name
       must pass all checks defined by git-check-ref-format(1). Some of
       these checks may restrict the characters allowed in a branch name.
git
1个回答
0
投票

请参阅我之前的回答“What is a “stale” git branch?”:您正在创建一个本地master分支,跟踪名为master2的远程分支。 但是在master2回购中不存在origin。 因此陈旧的属性。

fetch不从远程不存在的分支master2获取任何提交,但确实创建了一个跟踪master的本地origin/master2分支,这意味着下一个git push将推送(和创建)origin/master2

正如我mention here,一个简单的git fetch origin -p --progress将删除origin/master2

正如the OPthe comments中提到的那样,“Git Internals - The Refspec”这一章确实包括:

如果要进行一次性提取,也可以在命令行中指定特定的refspec。 要将遥控器上的master分支在本地拉到origin/mymaster,您可以运行:

$ git fetch origin master:refs/remotes/origin/mymaster
© www.soinside.com 2019 - 2024. All rights reserved.