3787

リモート ブランチを追跡する新しいブランチを作成する方法は知っていますが、既存のブランチをリモート ブランチを追跡するにはどうすればよいですか?

ファイルを編集するだけでよいことはわかってい.git/configますが、もっと簡単な方法があるはずです。

4

22 に答える 22

4568

ブランチfooとリモートが与えられた場合upstream:

Git 1.8.0 以降:

git branch -u upstream/foo

または、ローカル ブランチfooが現在のブランチでない場合:

git branch -u upstream/foo foo

または、より長いコマンドを入力したい場合、これらは上記の 2 つと同等です。

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

Git 1.7.0 以降 (1.8.0 より前):

git branch --set-upstream foo upstream/foo

ノート:

  • 上記のすべてのコマンドにより、ローカル ブランチはリモート ブランチからリモートブランチfooを追跡します。fooupstream
  • 古い (1.7.x) 構文は廃止され、新しい (1.8+) 構文が優先されます。新しい構文は、より直感的で覚えやすいことを目的としています。
  • アップストリーム ブランチの定義は、まだフェッチされていない新しく作成されたリモートに対して実行すると失敗します。その場合はgit fetch upstream事前に実行してください。

参照:なぜ常に --set-upstream を実行する必要があるのですか?

于 2010-02-18T03:06:52.900 に答える
176

-uこれは、次のようにオプションを使用してプッシュすることの副作用として行います

$ git push -u origin branch-name

同等の長いオプションは--set-upstream.

このgit-branchコマンドは も認識--set-upstreamしますが、その使用は混乱を招く可能性があります。バージョン 1.8.0ではインターフェイスが変更されています。

git branch --set-upstreamは推奨されておらず、比較的遠い将来に削除される可能性があります。 git branch [-u|--set-upstream-to]より健全な順序で引数が導入されました。

と言いたくなったgit branch --set-upstream origin/masterのですが、これは Git に、現在チェックアウトされているブランチと統合するためにローカル ブランチ「origin/master」を配置するように指示します。このオプションは非推奨です。代わりに新しい--set-upstream-to( short-and-sweet付きの-u) オプションを使用してください。

ローカルfooブランチがあり、そのブランチをそのアップストリームと同じ名前で扱いたいとします。これを実現する

$ git branch foo
$ git branch --set-upstream-to=origin/foo

あるいは単に

$ git branch --set-upstream-to=origin/foo foo
于 2012-10-02T16:24:00.303 に答える
66

Gitバージョン1.8.0以降の場合:

実際に受け入れられた答えが機能するために:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR Git version 1.8.0 and higher:
git branch --set-upstream-to=upstream/qa
# Gitversions lower than 1.8.0
git branch --set-upstream qa upstream/qa
于 2010-11-23T12:08:42.100 に答える
58

このgit_remote_branchツールが役立つ場合があります。リモートブランチを作成、公開、削除、追跡、および名前変更するための簡単なコマンドを提供します。grb優れた機能の1つは、コマンドに実行するgitコマンドを説明するように依頼できることです。

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch
于 2009-02-06T17:11:44.830 に答える
48

Git 1.5.x という早い時期に、このようにローカル ブランチ$BRANCHをリモート ブランチに追跡させることができるorigin/$BRANCHと思います。

それが存在し$BRANCHorigin/$BRANCH現在チェックアウトしていない$BRANCH場合(チェックアウトしている場合は切り替えます)、次のようにします。

git branch -f --track $BRANCH origin/$BRANCH

これ$BRANCHは追跡ブランチとして再作成されます。すでに存在しているにもかかわらず、-f強制的に作成されます。通常のデフォルトが設定されている場合 (つまり、git-config パラメーターが true の場合) はオプションです。$BRANCH--trackbranch.autosetupmerge

origin/$BRANCHまだ存在しない場合は、ローカル$BRANCHをリモート リポジトリにプッシュすることで作成できます。

git push origin $BRANCH

ローカル ブランチを追跡ブランチに昇格させる前のコマンドが続きます。

于 2010-07-28T09:33:52.843 に答える
45

1- git fetch --allを使用してローカル メタデータを更新します。

ここに画像の説明を入力

2- git branch -aを使用してリモート ブランチとローカル ブランチを表示します。 次のスクリーンショットを参照してください。

ここに画像の説明を入力

3-リモートとリンクするターゲットブランチに切り替えます:使用

git チェックアウトのブランチ名

例 :

ここに画像の説明を入力

4- 以下を使用して、ローカル ブランチをリモート ブランチにリンクします。

git branch --set-upstream-to nameOfRemoteBranch

NB : nameOfRemoteBranch : ステップ 2 の出力からコピーする " git branch -r "

使用例:

ここに画像の説明を入力

于 2016-06-06T14:21:12.240 に答える
27

必ず実行してください:

git config push.default tracking

トラブルなくプッシュできるように

于 2011-08-29T21:38:32.473 に答える
25

編集.git/configはおそらく最も簡単で最速の方法です。いずれにせよ、リモート ブランチを処理するための Git コマンドが行っていることです。

ファイルを手でいじりたくない場合 (そしてそれほど難しいことではありません)、いつでも を使用してそれを行うことができます...しかし、繰り返しになりますが、とにかくファイルgit configを編集するだけです。.git/config

もちろん、(フラグgit checkoutを渡すなどして)使用時にリモート ブランチを自動的に追跡する方法はありますが、これらのコマンドは既存のブランチではなく、新しいブランチで機能します。--track

于 2009-02-06T15:17:54.530 に答える
20

要するに

git branch --set-upstream yourLocalBranchName origin/develop

これにより、yourLocalBranchNameトラックが というリモート ブランチになりますdevelop

于 2012-10-09T07:19:03.180 に答える
17

1.6.x の場合、git_remote_branchツールを使用して実行できます。

grb track foo upstream

これにより、Git がfooトラックを作成しますupstream/foo

于 2010-06-01T02:23:47.553 に答える
15

次のコマンドを使用します (ローカル ブランチ名が「branch-name-local」で、リモート ブランチ名が「branch-name-remote」であるとします)。

$ git branch --set-upstream-to=origin/branch-name-remote branch-name-local

ローカル ブランチとリモート ブランチの名前が同じ場合は、次の手順を実行します。

$ git branch --set-upstream-to=origin/branch-name branch-name
于 2015-12-22T09:46:13.040 に答える
10

ここで、 と を使用githubしてgit version 2.1.4、次のようにします。

$ git clone git@github.com:user/repo.git

また、ローカルにリンクされていなくても、リモートは itelsef によって提供されます。

$ git remote show origin

* remote origin
  Fetch URL: git@github.com:user/repo.git
  Push  URL: git@github.com:user/repo.git
  HEAD branch: master
  Remote branches:
    develop tracked         <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    master  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

しかしもちろん、まだローカル ブランチはありません。

$ git branch
* master                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

見る?develp をチェックアウトするだけで、魔法のように自動的に実行されます。

$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'

とても簡単!


概要。次の 2 つのコマンドを実行するだけです。

$ git clone git@github.com:user/repo.git
$ git checkout develop
于 2015-11-29T23:04:57.007 に答える
9

「--track」オプションを使用

  • の後git pull:

    git checkout --track <remote-branch-name>

  • または:

    git fetch && git checkout <branch-name>

于 2016-08-02T10:23:19.343 に答える
6

これはこの質問に対する直接的な回答ではありませんが、アップストリーム ブランチを構成しようとしているときに私と同じ問題を抱えている可能性がある人のために、ここにメモを残しておきたいと思います。

push.defaultには注意してください。

古いバージョンの git では、デフォルトはmatchingでした。たとえば、次のような場合、非常に望ましくない動作が発生します。

オリジン/マスターへのローカルブランチ「マスター」追跡

アップストリーム/マスターへのリモート ブランチ「アップストリーム」トラッキング

「upstream」ブランチで「git push」を試みた場合、push.default と一致するgit は自動的にローカル ブランチ「master」を「upstream/master」にマージしようとし、多くの混乱を引き起こします。

これにより、より正常な動作が得られます。

git config --global push.default アップストリーム

于 2016-05-21T12:53:42.560 に答える
5

多少関連する方法で、リモート追跡ブランチを既存のブランチに追加しようとしましたが、そのリモート追跡ブランチを追加したいシステム上のそのリモートリポジトリにアクセスできませんでした (これのコピーを頻繁にエクスポートするため)スニーカーネットを介して、そのリモートにプッシュするアクセス権を持つ別のシステムにレポします)。まだフェッチされていないローカルにリモート ブランチを強制的に追加する方法がないことがわかりました (そのため、ローカルはブランチがリモートに存在することを知らず、エラーが発生しました: the requested upstream branch 'origin/remotebranchname' does not exist)。

最後に、新しいヘッドファイルを追加してから参照をコピーすることで、以前は不明だった新しいリモートブランチを(フェッチせずに)追加することができました.git/refs/remotes/origin/remotebranchname(目玉が最も速かったので、それは不自由でした;-)、オリジンにアクセスできるシステムからワークステーションへのレポ(リモートブランチを追加していたローカルレポを使用)。

それが完了したら、使用できますgit branch --set-upstream-to=origin/remotebranchname

于 2015-10-05T06:10:44.840 に答える
4

または単に:

まだブランチにいない場合は、ブランチに切り替えます。

[za]$ git checkout branch_name

走る

[za]$ git branch --set-upstream origin branch_name
Branch origin set up to track local branch brnach_name by rebasing.

そしてあなたは準備ができています:

 [za]$ git push origin branch_name

次のコマンドを実行すると、構成ファイルを見て、何が何を追跡しているかを確認できます。

 [za]$ git config -e

また、これを知っておくと便利です。追跡されているブランチと追跡されていないブランチが表示されます。:

  [za]$ git remote show origin 
于 2016-10-07T16:20:58.363 に答える
1

私のように、ローカル ブランチ名をリモート ブランチ名と同期させたいだけの人には、次の便利なコマンドがあります。

git branch -u origin/$(git rev-parse --abbrev-ref HEAD)
于 2019-02-26T09:54:35.220 に答える
-2

これもうまくいくだろう

git branch --set-upstream-to=/< remote>/< branch> < localbranch>
于 2016-06-22T16:37:35.087 に答える