Git では、 origin/master と origin master の違いは何ですか? 質問する

Git では、 origin/master と origin master の違いは何ですか? 質問する

わかっています、origin はリモート リポジトリを表す用語であり、master はそこにあるブランチです。

ここでは意図的に「コンテキスト」を省略していますが、答えがコンテキストに依存しないことを願っています。 では、git コマンドラインでは、origin/masterorigin 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はローカルです。 からフェッチするたびにoriginorigin/mainは更新されます。ただし、は古くなる可能性があり、に が存在しないorigin/main可能性もあります。 でオプション ( )を使用すると、追跡しているブランチが削除された場合にリモート追跡ブランチを自動的に削除できます。mainorigin--prune-pgit fetch

ブランチは のブランチへの参照またはポインタでorigin/mainはありません。これはローカル コピーです。mainorigin

例: 2ステップで引く

origin/mainはブランチなので、マージすることができます。ここでは 2 つの手順でプルします。

ステップ 1:mainリモート からフェッチしますoriginmainのブランチ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

おすすめ記事