2017-12-26 7 views
1

私は遠隔地点にマスターブランチしか持っていません。gitを別のローカルリモートrefspecにフェッチ

それから私はやった:

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。私はgitのブランチの男をチェックし、見つけた

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

:フルrefspecを与えることによって、それをやろうとしたときに

bash$ git branch -r -d origin/master2 

それを削除するとエラーを得た:2つ目の質問は、私がしなければならない理由でありますそこ支店名について何も特別な:

<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. 

答えて

0

私の前の回答「What is a “stale” git branch?」を参照してください:あなたはという名前のリモートブランチを追跡するローカルmasterブランチを作成しているが210。
しかしmaster2originレポには存在しません。
したがって、古い属性です。

ザ・任意のリモートの非既存のブランチmaster2からコミットフェッチしませんが、次のgit pushプッシュ(および作成)う意味ローカルmaster分岐追跡origin/master2を、作成しないorigin/master2をフェッチします。

I mention hereのように、簡単なgit fetch origin -p --progressorigin/master2を削除します。

the commentsthe OPで述べたように、章では「Git Internals - The Refspecは」含まない:あなたは一回の操作を行いたい場合のみフェッチ

、コマンドラインで特定のrefspecを指定することができ、あまりにも。リモートダウンローカルorigin/mymaster上へmasterブランチを引っ張って
、次のコマンドを実行します。迅速な返信用

$ git fetch origin master:refs/remotes/origin/mymaster 
+0

感謝を。私が最初にプッシュした後に理解するように、master2はリモートで作成されます。その後、私のローカルrefs/remotes/origin/master2は「古い」ステータスを失いますが、origin/master2とremote/origin/master2の両方は空の状態になります。 – user1337

+0

@ user1337はい、最初のプッシュ後、 'master2'は '古い'ステータスを失います。しかし、それは空ではありません:少なくともマスターからのコミットが1つあります。 – VonC

+0

私はそれを見つけました:https://git-scm.com/book/en/v2/Git-Internals-The-Refspecあなたが見つけることができます:一度だけのフェッチをしたい場合は、コマンドライン上の特定のrefspecも参照してください。 $ git fetch origin master:refs/remotes/origin/mymaster – user1337

関連する問題