私はGitからこのメッセージを受け取りました:
リモートの 'origin'からプルするように要求しましたが、ブランチを指定しませんでした。これは現在のブランチにデフォルトで設定されているリモートではないため、コマンドラインでブランチを指定する必要があります。
誰か説明できますか?そしてそれを修正するより重要な方法?
回答:
「元の」リモートリポジトリからプルするブランチをgitに指示する必要があります。
デフォルトのブランチ(マスター)がgit pull origin master
必要なので、問題を修正する必要があります。
詳細についてはgit help branch
、git help pull
およびgit help fetch
を参照してください。
git pull
をプルしてマージするため、その動作はチェックアウトされたブランチに完全に依存します。デタッチされたHEAD(ブランチがチェックアウトされていない)では、プルするブランチを知ることはできません。
これを修正するにはmaster
、master
ブランチにいてorigin
リモートからブランチをプルしたい場合、十分に新しいGitバージョン(1.8以降)を使用します。
git branch -u origin/master master
(他のブランチやリモートの場合も同様です。)
これをプッシュと組み合わせると、さらに短くなります。
git push -u origin master
その後、プレーンなgit pull
/ git push
はあなたが期待することをします。
Git 1.7シリーズの間、スイッチgit branch
はありませんでした-u
(ありましgit push
た)。代わりに、はるかに長い時間を使用する必要がありました--set-upstream
。
git branch --set-upstream master origin/master
と比較して引数が逆転していることに注意してください-u
。私はこの注文を何度もいじりました。
ちなみに、これらはすべて、次のことを行うための省略形であり、明示的に行うことができます。
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
1.7より前は、この方法で行う必要がありました。
git branch --set-upstream master origin/master
-u
オプションはgit branch
私のバージョン1.8.5.3では文書化されていないため、ここでの文書化がさらに重要になります。また、ご存知のように、このオプションはバージョン1.7。*では使用できませんでした。以来-u
の略である--set-upstream
あなたが行ったように、その引数の順序を逆にするべきではありません--set-upstream
@ EvanDonovanさんのコメントによりますか?
git branch -u origin/master master
)を使用すると、「ブランチマスターは、リモートブランチマスターを起点から追跡するように設定されています」という期待どおりに機能します。
-u
スイッチは実際にはないの短い形式--set-upstream
。引数の順序は、の順序と実質的に逆になり--set-upstream
ます。--set-upstream-to
(「-to」に注意してください)が導入されたのはその後のことだと思います。これが-u
現在、実際には省略形です。
メッセージはそれが何であるかを正確に述べています。現在のブランチは、元のブランチに関連付けられていません(追跡されていません)。そのため、gitは何をプルするかわかりません。
何をすべきか?場合によります...
通常の状況では、オリジンのマスターからクローンされたマスターから分岐したローカルブランチxyzを使用しています。これを解決する通常の方法は、マスターに切り替え、それをoriginと同期するようにプルしてから、xyzとに戻ることです。rebase master
しかし、あなたの状況では、他のことをしたいと思うかもしれません。ブランチとリモートの詳細と、それらをどのように使用するかを知らなければ、それを知ることはできません。