web-dev-qa-db-ja.com

git checkoutタグ、git pullはブランチで失敗します

Gitリポジトリのクローンを作成し、タグをチェックアウトしました。

# git checkout 2.4.33 -b my_branch

これは問題ありませんが、ブランチでgit pullを実行しようとすると、gitはこのエラーを吐き出します。

現在のブランチの追跡情報はありません。マージするブランチを指定してください。詳細については、git-pull(1)を参照してください

git pull <remote> <branch>

このブランチの追跡情報を設定する場合は、次の方法で設定できます。

git branch --set-upstream new Origin/<branch>

git pullはmasterブランチのみを更新し、現在のブランチはそのままにしておきます(とにかくタグです)。このようなことは可能ですか?

これが必要な理由は、常にgitがリポジトリをプルし、もちろん上記のエラーのために失敗する自動スクリプトがあるためです。

131
alesko

編集: Gitの新しいバージョンでは、--set-upstream masterは廃止されました。代わりに--set-upstream-toを使用する必要があります。

git branch --set-upstream-to=Origin/master master

プロンプトに従って、次を実行できます。

git branch --set-upstream master Origin/master

その後、git pullを実行するだけでコードを更新できます。

114
Vincent Wen

私は同じ問題を抱えていて、このコマンドで修正しました:

$ git Push -u Origin master

ヘルプファイルから、-uは基本的にプルのデフォルトを設定します。

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).
90

これらのコマンドを試してください:

git pull Origin master
git Push -u Origin master
48
navins

を使用してmasterブランチに切り替えます

$ git checkout master

git pull操作を実行します

$ git pull Origin/master

その後、my_branchに再び切り替えることができます。

7
cfedermann

@ alesko :チェックアウト後のgit pullのみを実行することはできませんmy_branchmasterブランチのみを更新します。
git pullcurrentブランチにもマージされるため、シナリオではmy_branchにマージされます

@ Simon :プッシュも行います。何故ですか?

$ git branch -u Origin/master
Branch master set up to track remote branch master from Origin.

ドキュメントによると:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
5
Casey

複数のブランチがある場合があります。また、現在のブランチはアップストリームをリモートに設定していません。

これを修正する手順:

git checkout branch_name
git branch --set-upstream-to=Origin/remote_branch_name local_branch_name

例えば.

// this set upstream of local branch develop to remote branch  Origin/develop,
git branch --set-upstream-to=Origin/develop develop

これを行った後、git pullを実行すると、指定されたブランチからプルします。

4
Eric Wang

まず、正しいブランチにいることを確認してください。
その後(1回のみ):

git branch --track

その後、これは再び機能します:

git pull
4
drzymala

プルするブランチを指定できます。

git pull Origin master

または、ローカルマスターブランチがgithubマスターブランチをアップストリームとして追跡するように設定することもできます。

git branch --set-upstream-to=Origin/master master
git pull

このブランチトラッキングは、リポジトリのクローンを作成するときに自動的に設定されます(デフォルトブランチのみ)が、既存のリポジトリにリモートを追加する場合は、トラッキングを自分で設定する必要があります。ありがたいことに、gitのアドバイスにより、その方法を覚えやすくなります。

--set-upstreamはgit 1.9.xで廃止されたようです。今後は、次のようなものを使用します

git branch -u Origin/master

マスターを既にチェックアウトしていると仮定します。そうでない場合、git branch -u Origin/master masterは機能します

2
Akash Kandpal

これを試して

git checkout master

git pull Origin master
2
vanarajcs

現在のブランチの追跡(上流)を設定する必要があります

git branch --set-upstream master Origin/master

--trackフラグを使用できる代わりに、すでに非推奨です

git branch --track master Origin/master

@caseyが通知するドキュメントリファレンスも気に入っています。

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
1
Jorman Bustos

私のために働いたのは:git branch --set-upstream-to = Origin masterもう一度プルを行ったとき、masterからの更新のみを取得し、警告が消えました。

1
Jason D

私のように常にこれを行う必要がある場合は、.gitconfigファイルに次を追加することで、エイリアスを自動的に設定することができます。

[alias]
    set-upstream = !git branch --set-upstream-to=Origin/`git symbolic-ref --short HEAD`

メッセージThere is no tracking information...が表示されたら、git set-upstreamを実行し、次にgit Pushを再度実行します。

https://zarino.co.uk/post/git-set-upstream/ に感謝

1
rjmunro

このコマンドは非推奨です:git branch --set-upstream master Origin/master

したがって、追跡を設定しようとすると、これは私のために働いたコマンドです:

git branch --set-upstream-to=Origin/master master
0
Aaron Lelevier

更新をダウンロードするだけの場合:

git fetch Origin master

ただし、これはOrigin/masterという参照を更新するだけです。ローカルmasterを更新する最良の方法は、別のコメントで言及されているチェックアウト/マージです。 IfローカルmasterOrigin/masterがオンになっているメイントランクから分岐していないことを保証できる場合、couldgit update-refを使用して現在のmasterを新しいポイントにマッピングしますが、それはおそらく定期的に使用するのに最適なソリューションではありません...

0
twalberg