gitからの紛らわしいエラーメッセージ


90

私はGitからこのメッセージを受け取りました:

リモートの 'origin'からプルするように要求しましたが、ブランチを指定しませんでした。これは現在のブランチにデフォルトで設定されているリモートではないため、コマンドラインでブランチを指定する必要があります。

誰か説明できますか?そしてそれを修正するより重要な方法?

回答:


89

「元の」リモートリポジトリからプルするブランチをgitに指示する必要があります。

デフォルトのブランチ(マスター)がgit pull origin master必要なので、問題を修正する必要があります。

詳細についてはgit help branchgit help pullおよびgit help fetch を参照してください。


2
これを機能させるには、「マスター」ブランチ(ブランチが選択されていなかった)をチェックアウトしてプルする必要があり、問題が修正されました。
cinek 2010年

@cinek:はい、現在のブランチgit pullをプルしてマージするため、その動作はチェックアウトされたブランチに完全に依存します。デタッチされたHEAD(ブランチがチェックアウトされていない)では、プルするブランチを知ることはできません。
Cascabel

@cinek:あなたはgitが初めてだったと思いますので、ブランチマスターが完全に標準的な状態だったと認めます。
p4bl0 2010年

86

これを修正するにはmastermasterブランチにいて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)では、「origin」というブランチの上流を「origin / master」に設定していると思います。あなたのブランチがローカルに「マスター」と呼ばれている場合、私はあなたがしたいと思う:git branch --set-upstream master origin/master
エヴァン・ドノバン

興味深いことに、この-uオプションはgit branch私のバージョン1.8.5.3では文書化されていないため、ここでの文書化がさらに重要になります。また、ご存知のように、このオプションはバージョン1.7。*では使用できませんでした。以来-uの略である--set-upstreamあなたが行ったように、その引数の順序を逆にするべきではありません--set-upstream@ EvanDonovanさんのコメントによりますか?
ホブ2014

ただし、表示するコマンド(git branch -u origin/master master)を使用すると、「ブランチマスターは、リモートブランチマスターを起点から追跡するように設定されています」という期待どおりに機能します。
ホブ2014

1
@hobs:それは実際にはGitの混乱です。-uスイッチは実際にはないの短い形式--set-upstream。引数の順序は、の順序と実質的に逆になり--set-upstreamます。--set-upstream-to(「-to」に注意してください)が導入されたのはその後のことだと思います。これが-u現在、実際には省略形です。
アリストテレスPagaltzis 2014年

うわー!確かに混乱しています。それを解いてくれてありがとう。
ホブ、2014年

3

メッセージはそれが何であるかを正確に述べています。現在のブランチは、元のブランチに関連付けられていません(追跡されていません)。そのため、gitは何をプルするかわかりません。

何をすべきか?場合によります...

通常の状況では、オリジンのマスターからクローンされたマスターから分岐したローカルブランチxyzを使用しています。これを解決する通常の方法は、マスターに切り替え、それをoriginと同期するようにプルしてから、xyzとに戻ることです。rebase master

しかし、あなたの状況では、他のことをしたいと思うかもしれません。ブランチとリモートの詳細と、それらをどのように使用するかを知らなければ、それを知ることはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.