Chapters ▾ 2nd Edition

A3.4 Bilaga C: Git-kommandon - Grening och sammanslagning

Grening och sammanslagning

Det finns bara en handfull kommandon som implementerar det mesta av grening och sammanslagning i Git.

git branch

Kommandot git branch är i praktiken ett verktyg för grenhantering. Det kan lista de grenar du har, skapa en ny gren, ta bort grenar och byta namn på grenar.

Merparten av Git-grenar är dedikerat till kommandot branch och det används genom hela kapitlet. Vi introducerar det först i Skapa en ny gren och går igenom de flesta andra funktionerna (lista och ta bort) i Grenhantering.

I Spårande grenar använder vi alternativet git branch -u för att sätta upp en spårningsgren.

Slutligen går vi igenom lite av vad det gör i bakgrunden i Git-referenser.

git utcheckning

Kommandot git checkout används för att växla grenar och lägga ut innehåll i din arbetskatalog.

Vi stöter först på kommandot i Byta gren tillsammans med kommandot git branch.

Vi ser hur man använder det för att börja spåra grenar med flaggan --track i Spårande grenar.

Vi använder det för att återinföra filkonflikter med --conflict=diff3 i Checka ut konflikter.

Vi går igenom dess relation till git reset i större detalj i Nollställning förklarad.

Slutligen går vi in på implementationen i HEAD.

git merge

Verktyget git merge används för att sammanfoga en eller flera grenar i grenen du har växlad till. Det flyttar sedan fram den aktuella grenen till resultatet av sammanslagningen.

Kommandot git merge introducerades först i Grundläggande grenarbete. Även om det används på olika ställen i boken finns det väldigt få variationer av kommandot – i regel bara git merge <branch> med namnet på den enskilda gren du vill sammanfoga in.

Vi gick igenom hur man gör en pressad sammanslagning (där Git sammanfogar arbetet men låtsas att det bara är en ny incheckning utan att registrera historiken för grenen du sammanfogar) i slutet av Öppet, litet projekt.

Vi gick igenom mycket om sammanslagningsprocessen och kommandot, inklusive alternativet -Xignore-space-change och flaggan --abort för att avbryta en problematisk sammanslagning i Avancerad sammanslagning.

Vi lärde oss hur man verifierar signaturer före sammanslagning om ditt projekt använder GPG‑signering i Signera incheckningar.

Slutligen lärde vi oss om subtree‑sammanslagning i Sammanfoga delträd.

git mergetool

Kommandot git mergetool startar helt enkelt en extern sammanslagningshjälpare om du får problem med en sammanslagning i Git.

Vi nämner det snabbt i Grundläggande sammanslagningskonflikter och går på djupet om hur man implementerar ett eget externt sammanslagningsverktyg i Externa sammanslagnings- och diffverktyg.

git log

Kommandot git log används för att visa den nåbara historiken i ett projekt, från den senaste incheckningsögonblicksbilden och bakåt. Som standard visar det bara historiken för grenen du står på, men det kan få andra eller till och med flera huvuden eller grenar att traversera. Det används också ofta för att visa skillnader mellan två eller fler grenar på incheckningsnivå.

Detta kommando används i nästan varje kapitel i boken för att demonstrera historiken i ett projekt.

Vi introducerar kommandot och går igenom det i viss detalj i Visa incheckningshistoriken. Där tittar vi på alternativen -p och --stat för att få en uppfattning om vad som introducerades i varje incheckning, och flaggan --pretty och --oneline för att visa historiken mer koncist, tillsammans med några enkla filter för datum och författare.

I Skapa en ny gren använder vi det med flaggan --decorate för att enkelt visualisera var våra grenpekare ligger och vi använder också flaggan --graph för att se hur divergerande historiker ser ut.

I Privat, litet team och Incheckningsintervall går vi igenom syntaxen branchA..branchB för att använda kommandot git log och se vilka incheckningar som är unika för en gren jämfört med en annan gren. I Incheckningsintervall går vi igenom detta ganska ingående.

I Sammanslagningslogg och Trippelpunkt går vi igenom formatet branchA…​branchB och syntaxen --left-right för att se vad som finns i den ena grenen eller den andra men inte i båda. I Sammanslagningslogg tittar vi också på hur man använder alternativet --merge för att hjälpa till med felsökning av sammanslagningskonflikter samt hur man använder --cc för att titta på sammanslagningsincheckningskonflikter i historiken.

I Referenslogg-kortnamn använder vi alternativet -g för att visa Git‑refloggen genom det här verktyget i stället för att traversera grenar.

I Sökning tittar vi på att använda alternativen -S och -L för att göra ganska avancerade sökningar efter något som hände historiskt i koden, såsom att se historiken för en funktion.

I Signera incheckningar ser vi hur man använder --show-signature för att lägga till en valideringssträng till varje incheckning i git log‑utdata baserat på om den var giltigt signerad eller inte.

git stash

Kommandot git stash används för att tillfälligt lagra oincheckat arbete för att rensa din arbetskatalog utan att behöva checka in ofärdigt arbete på en separat gren.

Detta täcks i princip helt i Lägga undan och städa.

git tag

Kommandot git tag används för att ge ett permanent bokmärke till en specifik punkt i kodhistoriken. Det används i regel för utgåvor.

Kommandot introduceras och täcks i detalj i Att tagga och vi använder det i praktiken i Versionsmarkeringar.

Vi täcker också hur man skapar en GPG‑signerad tagg med flaggan -s och hur man verifierar en med flaggan -v i Signera ditt arbete.