Qual è la differenza tra HEAD
e master
in Git?
Ho fatto un clone di un progetto su GitHub e voglio inviare le mie modifiche al telecomando. Ma a quale dovrei spingere?
Qual è la differenza tra HEAD
e master
in Git?
Ho fatto un clone di un progetto su GitHub e voglio inviare le mie modifiche al telecomando. Ma a quale dovrei spingere?
Risposte:
master
è un riferimento alla fine di un ramo. Per convenzione (e per impostazione predefinita) questo è di solito il ramo di integrazione principale, ma non deve esserlo.
HEAD
è in realtà un tipo speciale di riferimento che punta a un altro riferimento. Potrebbe indicare master
o meno (indicherà il ramo attualmente estratto). Se sai di voler impegnarti nella master
filiale, spingi a questo.
Ecco un esempio visivo:
Sul tuo repository puoi controllare dove HEAD
sta puntando eseguendo questo:
$ git symbolic-ref HEAD
refs/heads/master
Tuttavia, scoprire dove remotes/origin/HEAD
sta puntando è più complicato perché si trova sul computer remoto.
C'è un piccolo tutorial sui riferimenti git qui:
http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1
La semplice risposta è che HEAD
è un puntatore / etichetta al commit più recente del ramo in cui ci si trova attualmente. master
è il ramo predefinito creato quando hai inizializzato un repository git (ad es git init
.).
È possibile eliminare il master
ramo (ad es git branch -D master
.). Non è possibile eliminare il HEAD
puntatore.
HEAD
è un puntatore / etichetta per il commit più recente del ramo in cui ci si trova attualmente." Penso che questo sia fuorviante nella migliore delle ipotesi. Se esegui il checkout di un commit precedente, HEAD ora è un puntatore a quel commit precedente, non al commit più recente. Destra?
checkout
comando equivale a cambiare ramo in altri sistemi SCM comuni.
HEAD
che è veramente il puntatore Git . Apprezzo il tuo commento e penso che lo faranno anche gli altri. Il contenuto del mio post originale e il tuo commento di follow-up si completano a vicenda. Grazie.
Spingi semplicemente le modifiche del tuo ramo attuale
git push origin
e spingerà il tuo ramo ' B
' cambia in ' origin/B
'.
Se sei sul tuo master
ramo, git spingerà a origin/master
.
In realtà spingerà tutte le modifiche sui rami locali che hanno rami remoti corrispondenti in origin
. È controllato dall'impostazione di configurazione push.default .
Vedi anche spingere RefSpecs nel libro Pro Git .
Quello che vedi è la barra laterale che rappresenta tutti i refspec del tuo repository remoto nel fork Experimental GitX del progetto GitX .
Il HEAD
designerà il ramo predefinito per quel telecomando.
Vedi la git remote set-head
pagina man :
Non è necessario disporre di un ramo predefinito per un telecomando, ma consente di specificare il nome del telecomando al posto di un ramo specifico.
Ad esempio, se il ramo predefinito perorigin
è impostato sumaster
, èorigin
possibile specificare dove normalmente si specificaorigin/master
.