Ce este Head in Git?

Uneori, vedeți documentația Git care se referă la ceva numit HEAD. De exemplu, sucursala ar trebui să fie complet integrată în HEAD. Dar ce este exact Git HEAD?

În acest articol, vom afla mai multe despre Git HEAD, dar înainte să rezumăm la ce este Git și la ce se folosește. Git este un instrument de control distribuit nu numai folosit de managerii de produse și dezvoltatori, ci și oamenii de știință de date pentru a gestiona dezvoltarea codului sursă a programului și istoricul acestuia.

Pointer HEAD în Git

Git menține o variabilă de referință, numită HEAD la cea mai recentă angajare din sucursala recentă. Vă puteți imagina HEAD ca „actuala ramură angajată”. Și ne putem gândi ca un indicator, întrucât scopul acestei variabile este să indice sau să acționeze ca referință la un anumit angajament din depozit. Spune, facem o nouă angajare în repo, apoi indicatorul sau HEAD se va muta sau își va schimba poziția pentru a indica un nou angajament.

HEAD indică punctul de plecare al filialei din depozit în permanență. Poate fi gândit ca ultimul stat sau ultimul punct verificat dintr-un depozit. Cu alte cuvinte, HEAD este un indicator pentru părintele următorului angajament sau unde următorul angajament se va întâmpla, deoarece acesta este locul în care repo.

O analogie bună ar fi un player de înregistrare și tastele de redare și înregistrare pe el ca HEAD. Pe măsură ce sunetul începe să înregistreze, banda se mișcă în față trecând pe lângă cap, înregistrând-o pe ea. Butonul Stop oprește înregistrarea în timp ce indică încă punctul pe care l-a înregistrat ultima dată, iar punctul în care capul înregistrării s-a oprit este locul în care va continua să înregistreze din nou când se apasă din nou Record. Dacă ne deplasăm, indicatorul capului se mută în diferite locuri, cu toate acestea, când este apăsat din nou Record, începe înregistrarea din punctul în care a fost îndreptat capul când a fost apăsat Record.

În Git, puteți utiliza comanda de mai jos pentru a vedea ce indică indicatorul HEAD.

pisica .git / HEAD:

  • Afișează conținutul .git / HEAD precum este prezentat mai jos
  • ref: refs / heads / master
  • Practic, este o referință simbolică la cea mai recentă ramură angajată pe care ați verificat-o și indică efectiv angajarea la începutul sucursalei curente.

Ori de câte ori facem un nou angajament, așa cum este arătat mai jos, acesta este adăugat înaintea HEAD-ului curent, ceea ce face ca Git să indice automat HEAD către noua angajare.

git diff HEAD..HEAD ~ 3: Mai precis, HEAD este un indicator în mișcare care s-ar putea referi la ramura curentă, sau nu ar putea, dar se referă întotdeauna la „angajarea curentă”. It (actual commit) este angajarea „git commit” este construită deasupra și sunt adesea comparate cu „git diff-cached” și „git status”.

git log @: Tastați „HEAD” necesită timp, mai ales atunci când există o scurtătură, „@”. Simbolul „@” este ales pentru că respectă în mod natural sintaxa (de exemplu (u)), dar în afară de asta nu există nici o referință sau operațiune, iar atunci când nu există niciuna dintre acestea, „HEAD 'se poate presupune în locul lui @.

1. ÎNVĂȚĂTOR detașat

Este plauzibil ca HEAD să indice o schimbare specifică care nu a fost încă legată de un nume de ramură. Aceasta este situația numită HEAD detașată și se întâmplă atunci când cineva verifică altceva decât o sucursală (locală), să spună un angajament specific, o sucursală de la distanță sau o etichetă. Prin urmare, HEAD detaached poate fi folosit pentru a verifica un angajament care nu indică punctul de plecare al unei sucursale existente sau pentru a crea un angajament complet nou, care nu este neapărat referit de o sucursală cunoscută.

Să luăm un exemplu în care facem checkout angajarea b într-un fel sau altul

  • git checkout master ^#or
  • git checkout v3.1

Observați, indiferent dacă se utilizează comanda de checkout, HEAD se va referi acum la b. Acest statut al lui b este denumit stare detașată HEAD.

Să ne uităm la exemplele de mai jos pentru a vedea ce se întâmplă când se creează un angajament:

git checkout -b foo: Mai întâi este creată o nouă ramură numită foo, la care se face referire la angajarea f care, la rândul său, actualizează HEAD-ul pentru a indica punctul de lucru. Acest lucru înseamnă că nu va mai fi într-o stare detașată HEAD.

git branch foo: Aceasta creează o nouă ramură numită foo, la care se face referire la angajarea f, dar HEAD este lăsată detașată.

git tag foo: Aceasta creează și o nouă etichetă numită foo, la care se face referire la angajarea f, dar HEAD este lăsată detașată.

Să presupunem că v-ați schimbat într-o altă poziție decât comiterea f, apoi numele obiectului trebuie recuperat mai întâi (de obicei efectuat folosind comanda git reflog), iar după aceea, se creează o referință la acesta.

Pentru a afla ultimele două comitete la care face referire, folosiți oricare dintre comenzile de mai jos:

  • git log -g -2 HEAD # sau
  • git reflog -2 HEAD

2. ORIG_HEAD

Există încă un fel de HEAD despre care trebuie să știți. Comenzile „merge” sau „pull” au lăsat întotdeauna vârful inițial al ramurii curente în ceva numit ORIG_HEAD. Poate fi folosit folosind următoarele comenzi.

git reset –hard ORIG_HEAD: Folosind acest lucru, resetarea tare readuce fișierul index împreună cu arborele de lucru la starea inițială, în timp ce resetează vârful ramurii la acel angajament, dar elimină modificările locale.

git reset –merge ORIG_HEAD: Dar dacă doriți să păstrați modificările locale, prin faptul că puteți utiliza comanda de mai sus pentru a păstra modificările locale.n plus, îmbinați întotdeauna seturile '.git / ORIG_HEAD' cu starea inițială a HEAD. o fuziune problematică poate fi eliminată folosind „git reset ORIG_HEAD”. Pe lângă aceasta, îmbina setările „.git / ORIG_HEAD” la starea inițială a HEAD în orice moment, astfel încât să elimini o fuziune problematică folosind „git reset ORIG_HEAD”.

Dacă vă confruntați cu orice problemă cu mai multe comiteri, ORIG_HEAD este setat la punctul de plecare al filialei curente înainte de a aplica orice patch-uri, deoarece o eroare în comitele poate fi rezolvată mai ușor în acest fel.

Avantajele GIT HEAD

  • Este folosit pentru a puncta ramura recent comisă.
  • Poate fi folosit pentru a face modificări din ultimul punct vizitat.
  • Poate fi folosit și pentru a vă deplasa în diferite puncte din istorie și pentru a lucra de acolo.
  • Menține depozitul și procesul curat și lizibil.

Concluzie

Git are multe utilizări și este utilizat pe scară largă de dezvoltatori, manageri de produse și oameni de știință de date. Comenzile sale sunt foarte eficiente și pot fi foarte utile. HEAD este o referire la ultimul angajament din sucursala actualmente verificată.

Articole recomandate

Acesta este un ghid pentru Ce este Capul în Git ?. Aici vom discuta pointerul HEAD în Git care include detașat HEAD și ORIG_HEAD împreună cu avantajele Git HEAD. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Ce este Git Fetch?
  2. Git Fetch vs Git Pull
  3. Ce este Git Branch?
  4. Terminologie Git
  5. Sistem de control al versiunilor GIT
  6. Git Push
  7. Trei etape ale ciclului de viață al gitului cu fluxul de lucru
  8. Cum se utilizează GIT Cherry-pick cu Exemplu?

Categorie: