web-dev-qa-db-ja.com

HEADとマスターの違い

GitのHEADmasterの違いは何ですか?

GitHubでプロジェクトのクローンを作成し、変更をリモートにプッシュしたい。しかし、どちらにプッシュする必要がありますか?

screenshot

166

masterは、ブランチの終わりへの参照です。慣例により(そしてデフォルトでは)、これは通常メインの統合ブランチですが、そうである必要はありません。

HEADは、実際には別の参照を指す特別なタイプの参照です。 masterを指す場合もあれば、そうでない場合もあります(現在チェックアウトされているブランチを指します)。 masterブランチにコミットすることがわかっている場合は、これにプッシュします。

以下に視覚的な例を示します。

alt text

独自のリポジトリで、次を実行することにより、HEADが指している場所を確認できます。

$ git symbolic-ref HEAD
refs/heads/master

ただし、remotes/Origin/HEADが指している場所を見つけることは、リモートマシン上にあるため、より注意が必要です。

Gitリファレンスに関する素晴らしい小さなチュートリアルがここにあります:

http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1

150
Lee Netherton

簡単な答えは、HEADは現在のブランチの最新のコミットへのポインター/ラベルであるということです。 masterは、gitリポジトリを初期化したときに作成されるデフォルトのブランチです(例:git init)。

masterブランチを削除できます(例:git branch -D master)。 HEADポインターは削除できません。

32
benhorgen

現在のブランチの変更をプッシュするだけです

git Push Origin

ブランチ「B」の変更を「Origin/B」にプッシュします。
masterブランチにいる場合、gitはOrigin/masterにプッシュします。
実際には、Originに一致するリモートブランチを持つローカルブランチのすべての変更をプッシュします。構成設定Push.defaultによって制御されます。
Pro GitブックのRefSpecsをプッシュする 」も参照してください。


表示されているのは、 GitXプロジェクトExperimental GitX fork にあるリモートリポジトリのすべての参照仕様を表すサイドバーです。

alt text

HEADは、そのリモートのデフォルトのブランチを指定します。
git remote set-head manページ を参照してください。

リモートにデフォルトのブランチを用意する必要はありませんが、特定のブランチの代わりにリモートの名前を指定できます。
たとえば、Originのデフォルトのブランチがmasterに設定されている場合、Origin/masterを通常指定する場所であれば、Originを指定できます。

8
VonC