リモートブランチを追跡するための既存のgitブランチの取得


81

gitを使用するときの私の通常のワークフローは、次のようなものです。

  1. ローカルリポジトリを作成する
  2. そのリポジトリでいくつかの作業を行ったり、ファイルを追加/変更したりします。
  3. リポジトリの中央リモートロケーションが必要であると判断し、それを作成します
  4. すべてのコミットをローカルリポジトリからこの新しいリモートリポジトリにプッシュします

しかし、現在では、私のことができるようにしたいpushpull私は押したりから引っ張ってる場所を指定しなくても、このリモートリポジトリから。ローカルマスターにリモートマスターを追跡させたい。

これを行う適切な方法は私にはわかりません。実際には複数のコマンドであってはならないのに、ドキュメントからそれを判断することはできませんでした。

これはリポジトリごとに1回しか実行されないため、私は通常、2つの単純ですがハッキーなソリューションのいずれかを採用しました。

  1. git clone新しいローカルリポジトリを作成するために使用され、古いリポジトリを削除しました。gitのクローン作成後、新しいリポジトリはオリジンを追跡するように設定されます。
  2. 手動で.git / configを編集して、マスタートラックの起点を作成しました。

コマンドを実行できるはずだと思います。おそらく、git remoteマスターがリモートマスターを追跡するように、既存のリポジトリをセットアップするための何らかの形式です。誰かがそのコマンドが何であるか教えてもらえますか?


実際に同様の質問をする前に頼まれたことが判明:stackoverflow.com/questions/312055/...
SpoonMeiser

gitバージョン> = 1.7.0.0の場合、1つのコマンドで実行できますここで説明します
KiRPiCH 2010

4
:これは実際の複製であるstackoverflow.com/questions/520650/...
takeshin

回答:


155

set-upstreamargを使用します。

git branch --set-upstream local-branch-name origin/remote-branch-name

上記のコマンドを実行すると、.git / configファイルが正しく更新され、次の出力で確認されます。

「ブランチlocal-branch-nameは、起点からリモートブランチremote-branch-nameを追跡するように設定されています。」

EDIT:としてマルタインは言った: "で、バージョンのGit v1.8.0、--set-上流は廃止されて使用すると、代わりに、上流から--set。"

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

詳細については、これを参照してください。


18
バージョンGitv1.8.0では、--set-upstream非推奨になりました。--set-upstream-to代わりに使用してください。
Martijn 2013年

1
git remote show <remote>どのブランチがローカルブランチによって追跡されているかを確認するために使用します
naitsirch 2013年

1
この提案された編集は承認されるべきではなく、根本的に答えを変更しました(そして、新しいオプションへの引数が逆になっているため、誤った状態のままになりました)。元の投稿者に、回答を更新するかどうかを決定させます。

1
git push -u
mattr- 2014

set upstream実際にコードをプッシュせずにマッピングを設定しませんか?pushは、マッピングを作成するためにコードをプッシュするように強制します。まだコードを持っていないかもしれませんが、マッピングを確立したいですか?
user20358 2016年

19

git help remoteあなたが知る必要があることをあなたに示すべきです。私はあなたが欲しいものは

git remote add [remote-name] [remote-url]

# Set a local branch to follow the remote
git config branch.[branch-name].remote [remote-name]

# Set it to automatically merge with a specific remote branch when you pull
git config branch.[branch-name].merge [remote-master]

.git / configを手動で編集してこれらを設定することもできます。


もう1つのオプションは、中央リポジトリを作成してから、作業ディレクトリを削除し、中央リポジトリからクローンを作成して再作成することです。ただし、.git / configを編集するとより有益になります。
William Pursell 2009

中央リポジトリのクローンを作成することと.git / configを編集することは、私の質問ですでに述べた2つのオプションです。
SpoonMeiser 2009

8

リモートブランチを追跡するために新しいローカルブランチを作成する場合にも、これを使用できます。

git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name] 

またはさらに良い:

git checkout -t origin/branch_name

git checkout --track -b branchname origin branchname fatal:git checkout:パスの更新はブランチの切り替えと互換性がありません。コミットとして解決できない「origin / branchname」をチェックアウトするつもりでしたか?
edebill 2010年

6

新しいバージョンのgitでは使用できます

git branch --track origin/branch_name

4
この投稿は非常に短い/コードのみであるため、自動的に低品質としてフラグが付けられます。問題をどのように解決するかを説明するテキストを追加して拡張していただけませんか。
ガン-モニカを復活させる2014年

これが最も正確な答えです!上記のすべてが間違っているか、もはやサポートされていませんgit branch --set-upstream BRANCH fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
GTodorov

3

The --set-upstream flag is deprecated and will be removed.

git branch master --set-upstream-to myupstream/master


1

3年間早送りし(そこで何をしたかを参照してください:-))、Git Bashを使用して追跡されていないブランチをプルしようとしましたが、

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> develop

以下は私が必要としたことを達成しました:

$ git branch --set-upstream-to=origin/develop develop Branch 'develop' set up to track remote branch 'develop' from 'origin'.


-1

次のコマンドを使用します。

git clone [<options>] [--] <repo> [<dir>]

こんにちは、質問を読み直したいと思うかもしれません-リポジトリのクローンを再度作成することについて言及していますが、質問はローカルリポジトリが最初に作成され、最初にリモートを追跡しなかった時期に関するものです。
SpoonMeiser
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.