Hvad er hoved i Git?
Undertiden ser du Git-dokumentationen henvise til noget, der hedder HEAD. For eksempel skal filialen være fuldstændigt integreret i HEAD. Men hvad er egentlig Git HEAD?
I denne artikel vil vi lære mere om Git HEAD, men inden det skal vi bare sammenfatte, hvad Git er, og hvad det bruges til. Git er et værktøj til distribueret kontrol, ikke kun brugt af produktledere og udviklere, men også dataforskere til at styre programmets kildekodeudvikling og dets historie.
HEAD Pointer i Git
Git opretholder en variabel til henvisning, kaldet HEAD til det seneste engagement i den nylige checkout-afdeling. Du kan forestille dig HEAD som den "nuværende engagerede gren". Og vi kan tænke på som en markør, da formålet med denne variabel er at pege på eller fungere som en henvisning til et bestemt engagement i depotet. Sig, vi indgiver en ny forpligtelse i repoen, så markøren eller HEAD vil flytte eller ændre sin position for at pege på en ny forpligtelse.
HEAD peger på udgangspunktet for den nuværende gren i depotet på alle tidspunkter. Det kan betragtes som den sidste tilstand eller det sidste checkede punkt i et depot. Med andre ord, HEAD er en markør til den næste forpligtende forælder, eller hvor det næste engagement vil ske, da det er her, repoen slap.
En god analogi ville være en pladeafspiller og afspilnings- og recordtasterne på den som HEAD. Når lyden begynder at optage, bevæger båndet sig foran og bevæger sig forbi hovedet ved at optage på det. Stop-knappen stopper optagelsen, mens den stadig peger på det sted, det sidst optagede, og det punkt, hvor indspilningshovedet stoppede, er hvor det fortsætter med at optage igen, når der trykkes på Record igen. Hvis vi bevæger os rundt, bevæger hovedpekeren sig til forskellige steder, men når der trykkes på Record igen, begynder at optage fra det sted, som hovedet pegede på, når der blev trykket på Record.
I Git kan du bruge kommandoen nedenfor til at se, hvad HEAD-markøren peger på.
kat .git / HEAD:
- Det viser indholdet af .git / HEAD som vist nedenfor
- ref: refs / heads / master
- Det er dybest set en symbolsk henvisning til den seneste engagerede gren, som du har tjekket ud og effektivt peger på forpligtelsen i begyndelsen af den nuværende filial.
Hver gang vi foretager en ny forpligtelse som vist nedenfor, tilføjes den før den nuværende HEAD, der får Git til automatisk at pege HEAD til den nye commit.
git diff HEAD..HEAD ~ 3: Mere præcist, HEAD er en bevægende markør, der kunne henvise til den nuværende gren, eller den kunne ikke, men den refererer altid til den “aktuelle engagement”. Det (nuværende engagement) er forpligtelsen “git commit” er bygget oven på og sammenlignes ofte med “git diff – cache” og “git status”.
git log @: Det at tage tid at skrive 'HEAD', især når der er en genvej, '@' i stedet. Symbolet '@' vælges, fordi det naturligvis følger syntaks (f.eks. (u)), men bortset fra at der ikke er nogen henvisning eller handling, og når der ikke er nogen af disse, 'HEAD 'kan antages i stedet for @.
1. Fjernet Hoved
Det er plausibelt for HEAD at pege på en bestemt ændring, der endnu ikke er knyttet til et filialnavn. Dette er situationen, der kaldes en løsrevet HEAD, og det sker, når nogen tjekker noget andet end en (lokal) filial, siger en bestemt engagement, en fjerngren eller et tag. Frakoblet HEAD kan derfor bruges til at tjekke et engagement, der ikke peger på startpunktet for en eksisterende filial, eller til at oprette en helt ny forpligtelse, som ikke nødvendigvis henvises til af en kendt filial.
Lad os tage et eksempel, hvor vi tjekker forpligtelse b på den ene eller den anden måde
- git checkout master ^#eller
- git checkout v3.1
Bemærk, at uanset hvilken checkout-kommando der bruges, henviser HEAD nu til commit b. Denne status af b kaldes som løsrevet HEAD-tilstand.
Lad os se på eksemplerne nedenfor for at se, hvad der sker, når der oprettes en forpligtelse:
git checkout -b foo: Først oprettes en ny gren ved navn foo, der henvises til at begå f, som igen opdaterer HEAD til at pege på gren foo. Dette betyder, at den ikke længere er i en løsrevet HEAD-tilstand.
git branch foo: Dette opretter en ny gren, der hedder foo, der henvises til at begå f, men HEAD forlades løsrevet.
git tag foo: Dette opretter også et nyt tag ved navn foo, der henvises til at begå f, men HEAD forlades løsrevet.
Antag, at du har ændret til en anden position end commit f, så skal objektnavnet først gendannes (typisk udført ved hjælp af git reflog-kommandoen), og derefter oprettes der en henvisning til det.
For at finde ud af de to sidste forpligtelser, der henvises til HEAD, skal du bruge en af nedenstående kommandoer:
- git log -g -2 HEAD #eller
- git reflog -2 HEAD
2. ORIG_HEAD
Der er endnu en slags HEAD, som du har brug for at vide om. Kommandoerne “flet” eller “træk” forlod altid den oprindelige spids af den nuværende gren i noget, der kaldes ORIG_HEAD. Det kan bruges ved hjælp af følgende kommandoer.
git reset –hard ORIG_HEAD: Ved hjælp af denne nulstiller hårdt indeksfilen sammen med arbejdet træet tilbage til sin oprindelige tilstand, mens spidsen af grenen nulstilles til den begå, men den kasserer de lokale ændringer.
git reset –merge ORIG_HEAD: Men hvad nu hvis du vil beholde de lokale ændringer, idet du kan bruge kommandoen ovenfor til at bevare de lokale ændringer. n tilføjelse, sætter fusion altid '.git / ORIG_HEAD' til den oprindelige tilstand af HEAD, så en problematisk fusion kan fjernes ved hjælp af 'git reset ORIG_HEAD'. Derudover sætter fusion '.git / ORIG_HEAD' til den oprindelige tilstand af HEAD på alle tidspunkter for at fjerne en problematisk fusion ved at bruge 'git reset ORIG_HEAD'.
Hvis du står over for et problem med flere forpligtelser, indstilles ORIG_HEAD til startpunktet for den aktuelle gren, inden du anvender patches, da en fejl i forpligtelserne lettere kan rettes på denne måde.
Fordele ved Git HEAD
- Det bruges til at pege på den nyligt engagerede gren.
- Det kan bruges til at foretage ændringer fra det sidst besøgte punkt.
- Det kan også bruges til at flytte til forskellige punkter i historien og arbejde derfra.
- Holder depotet og processen ren og læsbar.
Konklusion
Git har mange anvendelser og bruges i vid udstrækning af udviklere, produktledere og dataforskere. Dens kommandoer er meget effektive og kan være meget nyttige. HEAD er en henvisning til det sidste engagement i den aktuelt afprøvede gren.
Anbefalede artikler
Dette er en guide til Hvad er hovedet i Git ?. Her diskuterer vi HEAD-pointeren i Git, som inkluderer løsrevet HEAD og ORIG_HEAD sammen med fordelene ved Git HEAD. Du kan også se på de følgende artikler for at lære mere -
- Hvad er Git Fetch?
- Git Fetch vs Git Pull
- Hvad er Git filial?
- Git-terminologi
- GIT versionskontrolsystem
- Git Push
- Tre faser af Git-livscyklus med arbejdsgangen
- Hvordan bruges GIT Cherry-pick med eksempel?