Qual è la differenza tra HEADe masterin 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 HEADe masterin 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 masterfiliale, spingi a questo.
Ecco un esempio visivo:

Sul tuo repository puoi controllare dove HEADsta puntando eseguendo questo:
$ git symbolic-ref HEAD
refs/heads/master
Tuttavia, scoprire dove remotes/origin/HEADsta 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 masterramo (ad es git branch -D master.). Non è possibile eliminare il HEADpuntatore.
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?
checkoutcomando equivale a cambiare ramo in altri sistemi SCM comuni.
HEADche è 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 masterramo, 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 HEADdesignerà il ramo predefinito per quel telecomando.
Vedi la git remote set-headpagina 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, èoriginpossibile specificare dove normalmente si specificaorigin/master.