Gitで、オリジン/マスターとオリジンマスターの違いは何ですか?


290

私は、知っている起源はリモートリポジトリのための用語であり、マスターはそこブランチです。

ここではわざと「コンテキスト」を省略していますが、答えがコンテキストに依存してはならないことを願っています。だから、gitのコマンドラインでは、違いは何であるの起源/マスター起源マスターがorigin / masterをいつ使用し、いつorigin masterを使用する必要があるかを明確に理解する方法はありますか?


回答:


390

ここには実際には3つありますorigin master。2つは別個のもので、origin/masterもう1つはです。合計で3つのこと。

2つのブランチ:

  • master 地元の支店です
  • origin/masterリモートブランチです(これは、「origin」という名前のリモート上の「master」という名前のブランチのローカルコピーです)

1つのリモート:

  • origin リモコンです

例:2ステップでプル

origin/masterはブランチなので、マージできます。これは2つのステップのプルです:

ステップ1、masterリモートからフェッチしoriginます。上のmasterブランチoriginがフェッチされ、ローカルコピーに名前が付けられorigin/masterます。

git fetch origin master

次に、にマージorigin/mastermasterます。

git merge origin/master

そして、あなたはあなたに新しい変更をプッシュすることができますmasterに戻っorigin

git push origin master

その他の例

名前で複数のブランチをフェッチできます...

git fetch origin master stable oldstable

複数のブランチをマージできます...

git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290

5
最初の部分は本当に便利です。他の例、特にマージの例がどのように適用されるかを接続できませんでした。答えてくれてありがとう。
Senthil Kumaran 2013

1
...「git checkout origin / master」を実行すると、ヘッドが切り離された状態になるためです。実際にリモートマスターブランチのローカルコピーがある場合、なぜ作業してコミットおよび追加できないのですか?それとも私はできるかもしれませんが、なぜそれが切り離されているのですか?
stu 14年5

3
コミットできるのはローカルブランチのみなので、リモートブランチをチェックアウトすると、「切り離されたヘッド」が取得されます。もちろん、これはリモートブランチのローカルコピーですが、それでもリモートブランチです。「master」が「origin / master」に関連しているというルールはまったくありません。それらは完全に異なる可能性があります。
ディートリッヒエップ2014年

7
@ Jwan622 "origin is a remote" ... "origin"は単なる名前です。リモートには任意の名前を選択できますが、 "origin"がデフォルトの名前です。リモートはどこか別の場所のリポジトリです。GitHubの場合もあれば、別のコンピューターの場合もあれば、同じコンピューター上の別の場所にある場合もあります。
ディートリッヒエップ2014年

2
@ Jwan622:「git remote add」は、新しいリモートを作成するコマンドです。「origin」は、リモートが追加する名前です。「origin」は単なる名前なので、必要に応じて別の名前を選択できます。たとえば、git remote add home my-server:projects/my-project「home」という名前のリモートを追加します。ドキュメントを参照することをお勧め
Dietrich Epp

16

origin/masterリモートのブランチの状態を表すエンティティです(物理的なブランチではないため)。masterorigin

origin mastermasterリモートのブランチoriginです。

だから私たちはこれらを持っています:

  • origin / master(リモートブランチへの表現またはポインタ)
  • マスター-(実際のブランチ
  • <Your_local_branch>(実際のブランチ
  • <Your_local_branch2>(実際のブランチ
  • <Your_local_branch3>(実際のブランチ

例(ローカルブランチmaster):

git fetch # get current state of remote repository
git merge origin/master # merge state of remote master branch into local branch
git push origin master # push local branch master to remote branch master

24
これは正しくorigin masterありません... ブランチではありません...実際には、「origin」(リモート)と「master」(ローカルブランチ)という2つの別個のものです。
ディートリッヒエップ2013

リモートマスターブランチの状態はローカルに存在しますよね?
Senthil Kumaran 2013

4
はい、これは正しくありませんorigin/master。リモートマスターブランチです。ローカルブランチはただのマスターです。
Aniket Thakur

5

origin/masterリモートmasterブランチです

通常git fetch origin、サーバーからすべての変更git rebase origin/masterを取得するためにaを実行した後、変更をリベースしてブランチを最新のインデックスに移動するには、を実行します。ここでorigin/masterは、基本的にorigin/masterブランチを現在のブランチにリベースするようにGITに指示しているため、リモートブランチを参照しています。

origin masterたとえば、押すときに使用します。git push origin masterリモートリポジトリにローカルmasterブランチをプッシュするようにGITに指示するだけです。


1
これは実際にはOPが探していたものに最も近いようorigin masterです。これは、「origin」リポジトリの「master」にあるもので何かを行うようにソフトウェアに指示しています。origin/master参照は、同じ方法であるf3a4d5HEADです。
Nemesarial

4

originはリモートgit urlの名前です。以下に、さらに多くのリモートの例があります。

bangalore => bangalore.example.com:project.git

boston => boston.example.com:project.git

origin / master(例:bangalore / master)に関する限り、これはbangaloreサイトでの「master」コミットへのポインタです。あなたはあなたのクローンでそれを見ます。

「フェッチ」または「プル」を実行したため、リモートバンガロールが進歩した可能性があります


2

origin/masterネットワークケーブルを外したまま(デタッチ状態でも)に切り替えることができるという事実を考えると、それはのmasterブランチのローカル表現である必要がありますorigin


上記および以下の回答では、origin / masterはリモートマスターブランチであると言われています。あなたの答えは、彼らの言うことと矛盾しています。説明してください。
Luna Lovegood 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.