2011-09-12 3 views
117

TL; DR:私は引っ張ることができない "追跡された"枝を持っています。あなたはマージしたいブランチを教えてくれません。

だからここで私は、 "バケツ-4" で午前:

$ git branch -v 
    bucket-1  410f7b5 * gh-53 * gh-48 * "Share App" 
    bucket-2  7ed70a2 * upgrade to SOLR 3.3.0 
    bucket-3  400ffe4 * emergency fix prod issue 
* bucket-4  64c2414 Merge branch 'bucket-3' into bucket-4 
    master   8dc4854 [ahead 1] * gh-73 

私は、リモートからの変更にプルしたいと思います:奇数

$ git pull 

You asked me to pull without telling me which branch you 
want to merge with, and 'branch.bucket-4.merge' in 
your configuration file does not tell me, either. Please 
specify which branch you want to use on the command line and 
try again (e.g. 'git pull <repository> <refspec>'). 
See git-pull(1) for details. 

If you often merge with the same branch, you may want to 
use something like the following in your configuration file: 

    [branch "bucket-4"] 
    remote = <nickname> 
    merge = <remote-ref> 

    [remote "<nickname>"] 
    url = <url> 
    fetch = <refspec> 

See git-config(1) for details. 

うーん、私はすでに追加と思いました"bucket-4"をトラッキングブランチとして使用します。見てみましょう:

確か
$ git remote show origin 
* remote origin 
    Fetch URL: [email protected]:abcd/main.git 
    Push URL: [email protected]:abcd/main.git 
    HEAD branch (remote HEAD is ambiguous, may be one of the following): 
    bucket-3 
    master 
    Remote branches: 
    bucket-1  tracked 
    bucket-2  tracked 
    bucket-3  tracked 
    bucket-4  tracked 
    master   tracked 
    Local branches configured for 'git pull': 
    bucket-1  merges with remote bucket-1 
    bucket-2  merges with remote bucket-2 
    bucket-3  merges with remote bucket-3 
    master   merges with remote master 
    Local refs configured for 'git push': 
    bucket-1  pushes to bucket-1  (up to date) 
    bucket-2  pushes to bucket-2  (up to date) 
    bucket-3  pushes to bucket-3  (up to date) 
    bucket-4  pushes to bucket-4  (local out of date) 
    master   pushes to master   (fast-forwardable) 

、「追跡」、まだ何とかそれはプッシュ用に設定されますが、引っ張らないようバケット-4がマークされています。

私の.git/configファイルを見ると、ほとんどの私のブランチでは「リモート」と「マージ」のエントリがありますが、バケット4ではそうではありません。これがなくても、どのように "追跡された"とも考えられますか?

[remote "origin"] 
    url = [email protected]:abcd/main.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[branch "rel-2011-07-07"] 
    remote = origin 
    merge = refs/heads/rel-2011-07-07 
[branch "bucket-1"] 
    remote = origin 
    merge = refs/heads/bucket-1 
[branch "bucket-2"] 
    remote = origin 
    merge = refs/heads/bucket-2 
[branch] 
    autosetupmerge = true 
[branch "bucket-3"] 
    remote = origin 
    merge = refs/heads/bucket-3 

私はここでおそらく解決策は、私のconfigファイルでバケツ-4用remote/mergeエントリを追加することであることがわかります。しかし、これがなければどのように「追跡」されていると考えられますか? bucket-4はローカルで作成され、このリポジトリからサーバーにプッシュされたので、何とかこのブランチに対して適切にトラッキングを設定していないと思われます。

今後、すべてのローカルブランチがリモートを適切に追跡するために追加できる設定はありますか?

+2

この質問は私に正しい方向を指していました。私はちょうど私が引っ張ってみようとしていたブランチのエントリを.git/configファイルに追加しなければなりませんでした。 –

+0

これもやってください。これを行う方法は、Mark Longairのgitブランチで説明しています--set-upstreamバケット-4起点/バケット-4 –

答えて

183

bucket-4 pushes to bucket-4というのは、ブランチをプッシュするときのデフォルトは、リモートで一致する名前を持つものにプッシュすることだからです。 (ローカルブランチはリモート追跡ブランチを追跡し、リモート追跡ブランチは、リモートリポジトリ内の別の名前のブランチに対応しても、これはまだデフォルトであることに注意してください。)

最も簡単な方法originであなたのbucket-4bucket-4の間の関連付けを設定することは、あなたが押す次回は、あなたが行うことを確認することです。また

git push -u origin bucket-4 

、あなたが行うことができます:

git branch --set-upstream bucket-4 origin/bucket-4 

直接ご質問のカップルに答えるために:

をそれもこれなしで「追跡」と考えられている方法は?この場合

そうではありません - あなたのgitの設定にはbranch.bucket-4.mergeまたはbranch.bucket-4.remoteはありませんならば、それはいかなる意味でのリモート追跡ブランチを追跡していません。 git remote show originの出力は、ブランチがデフォルトでプッシュされる場所を示しています。

今後、すべてのローカルブランチがリモートを適切に追跡するために追加できる設定はありますか?

あるとは思わない。ローカルにbucket-4を作成したときには、リモートトラッキングブランチが存在しないため、その時点で設定することはできません。デフォルトの動作は非常に混乱します。上流のリポジトリの最初のgit push-uを追加することを忘れないでください。

私はそれが助けになることを願っています。

+7

"-u"パラメータがトリックを行いました。 – neoneye

+7

'git branch --set-upstream'は私にとって完璧に働きました。 – ohaal

+0

gitブランチ--set-upstreamバケット-4起点/バケット-4は私のために働いていました:-) – Aliza

3

git branch --set-upstream <branch> origin/<branch>は少なくとも1.8.2.3(私のバージョン)以降は推奨されませんでした。

代わりにgit branch --set-upstream-to=origin/<branch> <branch>を使用してください。

+2

これは[Mark's answer](http://stackoverflow.com/a/7388440/456814)のコメントとなりましたか?また、実際には[Git version 1.8.0](https://github.com/git/git/blob/v2.0.4/Documentation/RelNotes/1.8.0.txt#L42-L47)で廃止されました。 –

関連する問題