わかっています、origin はリモート リポジトリを表す用語であり、master はそこにあるブランチです。
ここでは意図的に「コンテキスト」を省略していますが、答えがコンテキストに依存しないことを願っています。 では、git コマンドラインでは、origin/masterとorigin masterの違いは何でしょうか。 origin/masterを使用するタイミングとorigin masterを使用するタイミングを明確に理解する方法はありますか?
ベストアンサー1
(注:この質問が最初に投稿されたとき、Git のブランチのデフォルト名は「master」でした。現在は「main」がデフォルト名であるため、Git を初めて使用する人にとってより自然になるように、この回答は「main」を使用するように更新されました。)
実際には、ここには 3 つのものがあります。origin main
は 2 つの別個のものであり、origin/main
は 1 つのものです。合計 3 つです。
2つのブランチ:
main
地方支店ですorigin/main
リモート追跡ブランチです(「origin」という名前のリモート上の「main」という名前のブランチのローカルコピーです)
リモコン 1 個:
origin
リモート
origin/mainはリモートですか?
ブランチorigin/main
はローカルです。 からフェッチするたびにorigin
、origin/main
は更新されます。ただし、は古くなる可能性があり、に が存在しないorigin/main
可能性もあります。 でオプション ( )を使用すると、追跡しているブランチが削除された場合にリモート追跡ブランチを自動的に削除できます。main
origin
--prune
-p
git fetch
ブランチは のブランチへの参照またはポインタでorigin/main
はありません。これはローカル コピーです。main
origin
例: 2ステップで引く
origin/main
はブランチなので、マージすることができます。ここでは 2 つの手順でプルします。
ステップ 1:main
リモート からフェッチしますorigin
。main
のブランチorigin
がフェッチされ、ローカル コピーの名前が付けられますorigin/main
。
git fetch origin main
次にorigin/main
に合流しますmain
。
git merge origin/main
その後、新しい変更をmain
次の場所にプッシュすることができますorigin
:
git push origin main
その他の例
名前で複数のブランチを取得できます...
git fetch origin main stable oldstable
複数のブランチをマージできます...
git merge origin/main hotfix-2275 hotfix-2276 hotfix-2290
別の名前を使用できますか?
ローカル ブランチに名前を付ける必要はありませんmain
。リモート ブランチと同じ名前にする必要はありません。ブランチに という名前を付けたいがalice
、 を追跡したいとしますorigin/main
。
それは簡単にできます:
git checkout -b alice --track origin/main
alice
ローカル ブランチの名前は ですが、リモート ブランチの名前はmain
、ローカル コピーの名前は であることがわかります。これはまったく問題ありません。少し混乱するかもしれませんが、という名前の別のorigin/main
ブランチがすでに存在していて、別の変更を行うために別のブランチに切り替える必要がある可能性があります。main