Att upprätthålla en serie "säkra" revisioner av ett projekt är kärnfunktionen i ett versionsstyrningssystem. Git åstadkommer detta genom inspelning snapshots av ett projekt. Efter inspelning av en stillbild kan du gå tillbaka och visa gamla versioner, återställa dem och experimentera utan rädsla för att förstöra befintlig funktionalitet.
SVN- och CVS-användare bör notera att detta är fundamentalt annorlunda än systemets genomförande. Båda dessa program registrerar diffs för varje fil - en inkremental registrering av förändringarna i ett projekt. Däremot är Gits ögonblicksbilder bara det-snapshots. Varje förbindelse innehåller den fullständiga versionen av varje fil den innehåller. Detta gör Git oerhört snabbt eftersom tillståndet för en fil inte behöver genereras varje gång det begärs:
Det här kapitlet introducerar det grundläggande arbetsflödet för att skapa ögonblicksbilder med hjälp av arbetsmappen, staging-området och engagerade historier. Dessa är kärnkomponenterna i Git-baserad revisionskontroll.
Gits staging-område ger dig en plats att organisera ett åtagande innan du lägger till det i projekthistoriken. Iscensättning är processen att flytta ändringar från arbetsboken till den iscensatta ögonblicksbilden.
Det ger dig möjlighet att välja och välja relaterad ändras från arbetsboken, istället för att begå allt på en gång. Det betyder att du kan skapa logisk snapshots över kronologisk sådana. Det här är en välsignelse för utvecklare eftersom det låter dem skilja kodningsaktiviteter från versionskontrollaktiviteter. När du skriver funktioner kan du glömma att stoppa för att begå dem i isolerade bitar. Då kan du, när du är färdig med din kodningssession, separera ändringar i så många som du vill, via scenen.
Om du vill lägga till nya eller ändrade filer från arbetsmappen till staging-området, använd följande kommando:
git lägg till
Om du vill radera en fil från ett projekt måste du lägga till det i raderingsområdet precis som en ny eller ändrad fil. Nästa kommando kommer att leda till radering och stoppa spårningen av filen, men den tar inte bort filen från arbetsmappen:
git rm - cached
Att se status för ditt förråd är en av de vanligaste åtgärderna i Git. Följande kommando utmatar läget för arbetsmappen och staging-området:
git status
Detta kommer att resultera i ett meddelande som liknar följande (vissa avsnitt kan utelämnas beroende på ditt förråds tillstånd):
# På grenmästare # Ändringar som ska begås: # # Ny fil: foobar.txt # # Ändringar inte iscensatte för commit: # # modifierad: foo.txt # # Untracked files: # # bar.txt
Det första avsnittet, "Ändringar att begå" är din iscensatta ögonblicksbild. Om du skulle springa git commit
just nu kommer bara dessa filer att läggas till i projekthistoriken. Nästa avsnitt listas spåras filer som inte kommer att inkluderas i nästa commit. Slutligen innehåller "Untracked Files" filer i din arbetsregister som inte har lagts till förvaret.
Om du behöver mer detaljerad information om ändringarna i din arbetsgrupp eller staging-område kan du generera en diff med följande kommando:
git diff
Detta ger en diff av varje unstaged Ändra i din arbetsregister. Du kan också skapa en diff av alla iscensatt ändras med --cachad
flagga:
git diff - cached
Observera att projekthistoriken ligger utanför ramen för git status
. För att visa engagerade ögonblicksbilder behöver du git logg
.
git status
Uppdrag representerar varje sparad version av ett projekt, vilket gör dem till atomenheten i Git-baserad versionskontroll. Varje åtagande innehåller en ögonblicksbild av projektet, din användarinformation, datumet, ett budmeddelande och en SHA-1 kontrollsumma av hela innehållet:
begå b650e3bd831aba05fa62d6f6d064e7ca02b5ee1b Författare: johnDatum: ons jan 11 00:45:10 2012 -0600 Några begå meddelande
Denna kontrollsumma tjänar som ett fördrags unika ID, och det betyder också att en förpliktelse kommer aldrig vara skadad eller oavsiktligt förändrad utan att Git vet om det.
Eftersom staging-området redan innehåller den önskade ändringen, kräver det inte att någon deltar i arbetskatalogen.
För att begå den iscensatta ögonblicksbilden och lägga till den i den aktuella grenens historia, kör följande:
git commit
Du kommer att presenteras med en textredigerare och uppmanas till ett "commit-meddelande". Kommittiga meddelanden ska ta följande formulär:
Git använder första raden för att formatera loggutmatning, e-postlistor, etc., så det borde vara kortfattat, samtidigt som hela ändringen beskrivs. Om du inte kan komma med sammanfattningsraden betyder det förmodligen att ditt åtagande innehåller för många orelaterade förändringar. Du borde gå tillbaka och dela upp dem i olika förpliktelser. Sammanfattningen ska följas av en blank linje och en detaljerad beskrivning av ändringarna (t ex varför du gjorde ändringarna, vilket biljettnummer det motsvarar).
Som ett förvarets status är visning av dess historia en av de vanligaste uppgifterna i Git-versionskontrollen. Du kan visa den aktuella filialens förpliktelser med:
git logg
Vi har nu de enda två verktygen vi behöver för att inspektera varje komponent i ett Git-arkiv.
git status
mot. git logg
Detta ger oss också en naturlig gruppering av kommandon:
git lägg till
, git rm
, git status
git commit
, git logg
Git ger en mängd olika formateringsalternativ för git logg
, några av dem ingår här. För att visa varje förbindelse på en enda rad, använd:
git logg --online
Eller, för att rikta in sig på en enskild fils historia istället för hela arkivet, använd:
git logg --online
Filtrering av loggutgången är också mycket användbar när din historia växer bortom en skärm av förbindelser. Du kan använda följande för att visa förpliktelser som finns i
men inte i
Båda argumenten kan vara ett commit-ID, ett filnamn eller en tagg:
git logg...
Slutligen kan du visa en diffstat av ändringarna i varje commit. Det här är användbart för att se vilka filer som påverkades av ett visst engagemang.
git logg - stat
För att visualisera historiken kanske du också vill titta på gitk
kommando, som egentligen är ett separat program som är dedikerat till att grafera grenar. Springa git hjälp gitk
för detaljer.
Taggar är enkla tips att begå, och de är otroligt användbara för bokmärkning av viktiga revisioner som offentliga utgåvor. De git taggen
Kommando kan användas för att skapa en ny tagg:
git tag -a v1.0 -m "Stabil release"
De -en
alternativet berättar Git att skapa en kommenterad tagg, som låter dig spela in ett meddelande tillsammans med det (anges med -m
).
Om du kör samma kommando utan argument kommer du att lista dina befintliga taggar:
git taggen
Denna lektion representerar ett kapitel från Git Succinctly, en gratis eBook från laget på Syncfusion.