2012-12-14 17 views
7

を追跡イムはGitリポジトリを悪用場合、私は知らない、または私は構成の問題を持っている場合は、そのいずれかの透明性が高く評価されるだろう:)Gitのブランチ:上流

を私は、マシンAとBに私のGitHubリポジトリのクローンを作成、その後、マシンAI上で実行します。

:マシンBで、その後

git checkout -b branchA 
// make edits 
git add . 
git commit -am "initial" 
git push 

を私は、その後行うマシンA上の

git pull 
git checkout branchA 
// make edits 
git commit -am "edits" 
git push 

を行います

git pull 

は、しかし、それは言う:

There is no tracking information for the current branch 

ので、私がしなければならない。

git branch --set-upstream branchA origin/branchA 

:/なぜそれが元々の問題もなく、原点/ branchAにそれを押したときに、私は、上流を設定する必要がありません?

Whats going on?ありがとう

私はmsygit 1.8を使用しています。ウィンドウ上で

P.S.マシンBでpullを実行すると、デフォルトで新しいブランチが表示されないのはなぜですか?branchAgit branchには表示されません(ただし、-rとなります)。私はgit config push.defaultので、私pull?

+0

リポジトリで 'Gitの設定push.default'の出力は何ですか?それは「現代」ではないでしょうか? – jszakmeister

+0

それは何も返しません(マシンAで):/ –

答えて

12

がrefspec 'で、あなたのgit pushgit push origin :を意味し、「Gitの1.8.0.msysgit.0」で、意味は何も返さないとき、すべての新しいリモートブランチはデフォルトで追跡することはできます: 'は "マッチング"ブランチを示します。

ここでは、リモート側に一致するbranchAを作成します。

しかし、それはリモートトラッキングブランチにはなりません。
つまり、branch.branchA.mergeには何も設定されていません。
これは、git pullが失敗する理由です。ローカルのbranchAにマージするリモートブランチがわからないためです。


注意、あなたの最初のgit push次のメッセージが表示されている必要があります。

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

    git config --global push.default matching 

To squelch this message and adopt the new behavior now, use: 

    git config --global push.default simple 

See 'git help config' and search for 'push.default' for further information. 
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 
'current' instead of 'simple' if you sometimes use older versions of Git) 

ので、Git2.0で、そのGitのプッシュは失敗します。
branchAをプッシュする唯一の方法は、(同じ名前を使用して)明示的にその上流分岐を設定することにより、次のようになります。

git push -u origin branchA 
+0

それは感謝します、ありがとう。この動作を防ぐための設定がありますか(つまり、 'git push' /' git push origin: 'リモートの追跡ブランチを作成するのですか?)、いつも' push -u'する必要がありますか? –

+0

@AndrewBullock最初のプッシュには '-u'を使うべきです。その後、あなたはそれを必要としません。また、デフォルトのプッシュモードを設定して、ローカルブランチとリモートトラッキングブランチ間の対応関係を簡単に実行できます。 – VonC

+0

@AndrewBullockは、 '-u'を明示的に使用したくない場合、アップストリームモードがここで助けてくれると言っています:http://stackoverflow.com/a/13751847/6309 – VonC

関連する問題