git checkout tag、git pullがブランチで失敗する


133

私は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がリポジトリをプルし、もちろん上記のエラーが原因で失敗する自動スクリプトがあるためです。


回答:


114

編集: Gitの新しいバージョンの--set-upstream master場合、非推奨になりました。--set-upstream-to代わりに次を使用してください:

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

プロンプトが表示されたら、次のように実行できます。

git branch --set-upstream master origin/master

その後、単に実行git pullしてコードを更新できます。


5
これで問題は解決しました。しかし、私は自分のマスターブランチがどのようにして原点への参照を失ったかを理解する必要があります。私は枝にいて、そうしましたgit checkout mastergit pull起源への参照が失われたため、私はできませんでした。今では動作します。ありがとうございました!
アリエル14

'git branch --set-upstream-to = origin / master master my_branch'が機能しました
Blue Clouds

90

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

$ 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).

48

次のコマンドを試してください:

git pull origin master
git push -u origin master

9

を使用してマスターブランチに切り替えます

$ git checkout master

次にgit pull操作を実行します

$ git pull origin/master

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


6
それはまさに私が避けようとしていることです。それを行うための「公式の」方法があるかどうか知りたかった。
alesko

5

@aleskogit pullチェックアウト後にのみブランチのみmy_branchを更新することはできませんmaster
のでgit pull現在のブランチにもマージされます->あなたのシナリオでは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.

4

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

git branch --track

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

git pull

4

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

これを修正する手順:

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、指定したブランチからプルします。


3

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

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

これを試して

git checkout master

git pull origin master

2
これは実際には質問に答えていません。全く受け入れられた答えはありませんが、またトップは1つがずっとこの古い質問への答えとしてフィッティングさ投票
fejese

1

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

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

私のために働いたのは:git branch --set-upstream-to = origin master私がもう一度プルしたとき、私はマスターからアップデートを取得するだけで警告は消えました。


1

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

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

メッセージが表示されたらThere is no tracking information...、を実行しgit set-upstreamgit pushもう一度実行します。

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


0

アップデートのみをダウンロードするには:

git fetch origin master

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


0

このコマンドは廃止されました: git branch --set-upstream master origin/master

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

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