HEAD
とmaster
in Gitの違いは何ですか?
GitHubでプロジェクトのクローンを作成し、自分の変更をリモートにプッシュしたいと考えています。しかし、どちらにプッシュすればよいですか?
HEAD
とmaster
in Gitの違いは何ですか?
GitHubでプロジェクトのクローンを作成し、自分の変更をリモートにプッシュしたいと考えています。しかし、どちらにプッシュすればよいですか?
回答:
master
ブランチの終わりへの参照です。慣例により(そしてデフォルトで)、これは通常、メインの統合ブランチですが、そうである必要はありません。
HEAD
実際には、別の参照を指す特別なタイプの参照です。指してmaster
いる場合とそうでない場合があります(現在チェックアウトされているブランチを指します)。master
ブランチにコミットしたい場合は、これにプッシュしてください。
ここに視覚的な例があります:
自分のリポジトリで、次の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
簡単な答えは、HEAD
現在ブランチにある最新のコミットへのポインタ/ラベルです。master
gitリポジトリを初期化したときに作成されるデフォルトのブランチです(例:)git init
。
master
ブランチ(例:)を削除できgit branch -D master
ます。HEAD
ポインタは削除できません。
HEAD
現在ブランチにある最新のコミットへのポインタ/ラベルです。」これはせいぜい誤解を招くだけだと思います。古いコミットをチェックアウトすると、HEADは最新のコミットではなく、その古いコミットへのポインターになります。正しい?
checkout
とって、このコマンドは他の一般的なSCMシステムでブランチを切り替えるのと同等です。
HEAD
ポインターが実際に何であるかをより詳しく理解しようとしている人にとっては素晴らしい説明だと思います。私はあなたのコメントに感謝し、他の人もそうすると思います。私の元の投稿の内容とあなたのフォローアップコメントは互いに補完し合っています。ありがとう。
現在のブランチの変更をプッシュするだけです
git push origin
そして、ブランチ ' B
'の変更を ' origin/B
'にプッシュします。ブランチに
いる場合master
、gitはにプッシュしorigin/master
ます。
実際には、で一致するリモートブランチを持つローカルブランチ上のすべての変更がプッシュされorigin
ます。これは、構成設定push.defaultによって制御されます。Pro GitブックのRefSpecsのプッシュ
も参照してください。
表示されているのは、GitXプロジェクトの実験的GitXフォーク内のリモートリポジトリのすべてのrefspecを表すサイドバーです。
HEAD
そのリモートのデフォルトのブランチを指定します。manページを
参照してgit remote set-head
ください。
リモートにデフォルトのブランチを用意する必要はありませんが、特定のブランチの代わりにリモートの名前を指定できます。
例えば、場合のデフォルトのブランチがorigin
に設定されmaster
、その後、origin
あなたは通常、指定しますどこに指定することができますorigin/master
。