0

何らかの理由で、私の git ブランチの一部に「remotes/origin」というプレフィックスが付いていることに気付きました。

BZ9
 * master   
 remotes/origin/BZ8   
 remotes/origin/BZ9   
 remotes/origin/HEAD -> origin/master   
 remotes/origin/junit1   
 remotes/origin/master

たとえば、「remotes/origin/BZ9」ブランチと BZ9 ブランチの違いは何ですか? 明らかに、それらは両方とも同じ概念ブランチに由来しますが、git はそれらを別個のものと見なしています。

4

1 に答える 1

0

あなたのリストでは、「BZ9」と「master」はどちらもローカル ブランチであり、自由に移動、更新、削除できます。これらのブランチのいずれかにいてコミットを行うと、ブランチが更新されて最新のコミットがポイントされます。

ただし、入力時に表示されるリモート/オリジンのプレフィックス付きの名前git branch -aは、ブランチのようなものですが、「読み取り専用」と考えることができます。直接制御しないこれらのブランチは、フェッチ時に自動的に設定され、再度フェッチ (またはプル) するまで変更されません。

これは、ローカル開発を追跡するローカル ブランチとは異なり、remotes/origin ブランチは、プル元のサーバー ("origin") でリモート開発を追跡するためです。

たとえば、「remotes/origin/junit1」は次のように言っています。

そのリモート ブランチは他のブランチと同じようにチェックアウトできますが、このブランチにコミットすると、ブランチ ポインターは更新されません。これは、ローカルの進行状況を追跡するためのものではなく、リモート リポジトリの進行状況を追跡するためのものです。

ローカルの進行状況は、必要に応じて自由に作成、更新、削除できるローカル ブランチによって追跡されます。

同様に、他の誰かがあなたのレポからクローンを作成した場合、彼らがあなたからフェッチすると、あなたからの 2 つのリモート ブランチが作成されます: "remotes/origin/BZ9" と "remotes/origin/master"。つまり、あなたのローカル ブランチは、あなたの下流にいる誰かのリモート/オリジン ブランチになります。

リモート/オリジン ブランチもこれですべてです。これらは、アップストリーム リポジトリのローカル ブランチの読み取り専用コピーです。

于 2013-02-19T02:40:03.840 に答える