Git Succinctly Inspelning Ändringar

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:


Inspelning av fullständiga ögonblicksbilder, inte skillnader mellan revisioner

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.


The Staging Area

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.


Komponenter som är involverade i uppläggning av ett åtagande

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 

Inspektera scenen

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.

Genererar Diffs

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.


Komponenter inom ramen för git status

Begår

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: john  Datum: 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.


Komponenter som är inblandade i att göra en ögonblicksbild

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).


Inspektionsförpliktelser

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.


Utgång av git status mot. git logg

Detta ger oss också en naturlig gruppering av kommandon:

  • Stage / Arbetsregister: git lägg till, git rm, git status
  • Begåvad historia: git commit, git logg

Användbara konfigurationer

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.


Tagging Commits

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.