Denne side er en undersøgelse af kommandoen git checkout
. Det dækker forbrugseksempler og kantsager. I Git-termer er en “checkout” handlingen med at skifte mellem forskellige versioner af en målenhed. git checkout
-kommandoen fungerer på tre forskellige enheder: filer, forpligtelser og grene. Ud over definitionen af “checkout” bruges udtrykket “check out” ofte til at antyde handlingen med at udføre kommandoen git checkout
. I emnet Undoing Changes så vi, hvordan git checkout
kan bruges til at se gamle forpligtelser. Fokus for størstedelen af dette dokument er checkout-operationer på filialer.
Check-out filialer svarer til at tjekke gamle forpligtelser og filer, idet arbejdsmappen opdateres til at matche den valgte gren / revision; dog gemmes nye ændringer i projekthistorikken – det vil sige, det er ikke en skrivebeskyttet handling.
Tjekning af grene
git checkout
kommando giver dig mulighed for at navigere mellem de grene, der er oprettet af git branch
. Ved at tjekke en gren opdateres filerne i arbejdskataloget, så de svarer til den version, der er gemt i den gren, og det fortæller Git at registrere alle nye forpligtelser på den gren. Tænk på det som en måde at vælge, hvilken udviklingslinje du arbejder på.
At have en dedikeret filial til hver nye funktion er et dramatisk skift fra en traditionel SVN-arbejdsgang. Det gør det latterligt nemt at prøve nye eksperimenter uden frygt for at ødelægge eksisterende funktionalitet, og det gør det muligt at arbejde på mange ikke-relaterede funktioner på samme tid. Derudover letter filialer også flere samarbejdsarbejdsprocesser.
Kommandoen git checkout
kan lejlighedsvis forveksles med git clone
. Forskellen mellem de to kommandoer er, at klon arbejder for at hente kode fra et eksternt lager, alternativt fungerer checkout for at skifte mellem kodeversioner, der allerede findes på det lokale system.
Anvendelse: Eksisterende grene
Hvis vi antager, at den repo, du arbejder i, indeholder eksisterende grene, kan du skifte mellem disse grene ved hjælp af git checkout
. For at finde ud af, hvilke grene der er tilgængelige, og hvad det aktuelle grennavn er, udfør git branch
.
Ovenstående eksempel viser, hvordan man får vist en liste over tilgængelige grene ved at udføre git branch
kommando, og skift til en bestemt gren, i dette tilfælde feature_inprogress_branch
.
Nye grene
Git checkout
arbejder hånd i hånd med git branch
. git branch
kommandoen kan bruges til at oprette en ny gren. Når du vil starte en ny funktion, opretter du en ny gren fra ved hjælp af git branch new_branch
. Når du er oprettet, kan du derefter bruge git checkout new_branch
til at skifte til den gren. Derudover accepterer kommandoen git checkout
et -b
-argument, der fungerer som en bekvemhedsmetode, der opretter den nye gren og straks skifter til den. Du kan arbejde på flere funktioner i et enkelt lager ved at skifte mellem dem med git checkout
.
Ovenstående eksempel opretter og tjekker samtidig . Indstillingen
-b
er et bekvemmelighedsflag, der fortæller Git at køre git branch
inden du kører git checkout
.
Som standard git checkout -b
baserer new-branch
fra nuværende HEAD
. En valgfri yderligere filialparameter kan overføres til git checkout
. I eksemplet ovenfor overføres , som derefter baserer
new-branch
fra existing-branch
i stedet for den aktuelle HEAD
.
Skiftning af grene
Skiftning af grene er en ligetil handling. Udførelse af følgende vil pege HEAD
til spidsen af .
Git sporer en historie med checkout-operationer i reflogen. Du kan udføre git reflog
for at se historikken.
Git Checkout en ekstern gren
Når du samarbejder med et team, er det almindeligt at bruge fjernbetjening opbevaringssteder. Disse arkiver kan hostes og deles, eller de kan være en anden kollegas lokale kopi. Hvert eksternt arkiv indeholder sit eget sæt grene. For at tjekke en fjernfilial skal du først hente indholdet af grenen.
I moderne versioner af Git kan du derefter tjekke fjerngrenen som en lokal gren.
Ældre versioner af Git kræver oprettelse af en ny gren baseret på remote
.
Derudover kan du tjekke en ny lokal filial og nulstille den til de sidste grene til de eksterne grene.
Fritliggende HEADS
Nu hvor vi har set de tre vigtigste anvendelser af git checkout
på grene, er det vigtigt at diskutere "detached HEAD”
tilstand. Husk at HEAD
er Gits måde at henvise til det aktuelle øjebliksbillede. Internt er git checkout
kommandoen opdaterer simpelthen HEAD
for at pege på enten den angivne gren eller begå. Når den peger på en gren, klager Git ikke, men når du tjekker en forpligtelse, er den skifter til en "detached HEAD”
-tilstand.
Dette er en advarsel, der fortæller dig, at alt hvad du laver er “løsrevet” fra resten af dit projekts udvikling. Hvis du skulle begynde at udvikle en funktion, mens der i en løsrevet HEAD
tilstand, ville der ikke være nogen gren, der giver dig mulighed for at komme tilbage t o det. Når du uundgåeligt tjekker en anden gren (f.eks. For at flette din funktion ind), ville der ikke være nogen måde at henvise til din funktion:
Pointen er, din udvikling skal altid finde sted på en gren – aldrig på en løsrevet HEAD
. Dette sikrer, at du altid har en henvisning til dine nye forpligtelser. Men hvis du bare kigger på en gammel forpligtelse, betyder det ikke rigtig, om du er i en fritliggende HEAD
tilstand eller ej.
Oversigt
Denne side fokuserede på brugen af kommandoen git checkout
, når du skifter filial. Sammenfattende ændrer git checkout
, når det bruges på grene, målet for HEAD
ref. Det kan bruges til at oprette grene, skifte gren og kasse fjerngrene. git checkout
kommandoen er et vigtigt værktøj til standard Git-operation. Det er en modstykke til git merge
. git checkout
og git merge
kommandoerne er vigtige værktøjer til at muliggøre git workflows
.