web-dev-qa-db-ja.com

git branch--set-upstream-toとgitremote addoriginの違い

git branch --set-upstream-togit remote add Origin、さらにはgit remote add upstreamの違いを知るのは少し混乱します。

基本的に、ネットワーク上で共有されるgit init --bareで作成されたベアリポジトリがあり、他の開発者もそれにプッシュして、プロジェクトのバージョンを設定できますローカルが、どのコマンドを実行する必要があるかわかりません上記の3つのうち(または他にある場合)、その中央リポジトリを追跡します。たとえば、すべてのプロジェクトから中央のベアリポジトリに変更をプッシュし、そこからプル/フェッチします。

誰かがこれについて啓発できますか?

18
dev02

git remote addは、別のリポジトリの省略名であるリモートを作成します。 git branch --set-upstream-toは、指定されたリモートリポジトリ内のブランチによって追跡されるブランチを設定します。

あなたがしたいのは、リモートブランチを追跡することです。これはgit branch --set-upstream-toまたはもっと単純にgit branch -uで行われます。

別のリポジトリからクローンを作成すると、Originという名前のリモートが作成され、ブランチmasterがチェックアウトされます。ローカルブランチマスターにリモートブランチマスターを追跡させるコマンドはgit branch -u Origin/masterであり、ローカルマスターブランチから実行されます。

17
David Culp

set-upstream-toを使用してリモート追跡ブランチを設定するには、リモートリポジトリを定義する必要があります。

開発者がベアリポジトリのクローンを作成しているとき、Originという名前のリモートが自動的に定義されます。つまり、各ローカルクローンで、git remote -vは、ベアリポジトリを参照するOriginという名前のリモートリポジトリを一覧表示します。 upstreamという名前のリモートを定義する必要はありません。

ただし、それは、そのリモートからのすべてのブランチがローカルブランチによって追跡されることを意味するわけではありません。
そこでgit branch --set-upstream-toが活躍します。

3
VonC