Git
Chapters ▾ 2nd Edition

3.3 Git förgreningar - Hantera grenar

Hantera grenar

Nu när du skapat, slagit ihop, och tagit bort grenar så skall vi kolla på lite grenhanteringsverktyg som kommer väl till pass när du börjar använda grenar hela tiden.

Kommandot git branch gör mer än att bara skapa och ta bort grenar. Om du kör det utan argument, så får du en lista över dina aktuella grenar:

$ git branch
  iss53
* master
  testing

Notera symbolen * som står före master-grenen: den indikerar vilken gren du just nu har utcheckad (d.v.s. den gren som HEAD pekar på). Detta betyder att om du sparar en version nu, så är det master-grenen som kommer flyttas framåt med ditt nya arbete. För att se den senaste versionen på varje gren kan du köra git branch -v:

$ git branch -v
  iss53   93b412c fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 add scott to the author list in the readmes

De användbara växlarna --merged och --no-merged kan filtrera listan så att endast grenar som du har eller inte har slagit ihop med den gren du just nu står på. För att se vilka grenar som redan är sammanslagna med den gren du nu står på kan du köra git branch --merged:

$ git branch --merged
  iss53
* master

Eftersom du redan slagit samman iss53 tidigare, så ser du den i listan. Grenar på denna listan utan * framför, är generellt set helt ok att ta bort med git branch -d eftersom du redan inkorporerat arbetet i dem i en annan gren, så du kommer inte att förlora något.

För att se alla grenar som innehåller arbete du inte har slagit ihop, kan du köra git branch --no-merged:

$ git branch --no-merged
  testing

Detta visar din andra gren. Eftersom den innehåller arbete som inte är sammanslaget ännu, kommer du inte kunna ta bort den med git branch -d:

$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.

Om du verkligen vill ta bort grenen och förlora arbetet i den, kan du tvinga git att ta bort den med -D som felmeddelandet föreslår.

Tips

Växlarna --merged och --no-merged kommer att, om du inte anger en version eller grennamn som argument, visa vad som är respektive inte är sammanslaget med din nuvarande gren.

Du kan alltid ge extra argument för att fråga om sammanslagningstillstånd gentemot en annan gren utan att först checka ut den grenen, som t.ex. vad är inte sammanslaget i master-grenen?

$ git checkout testing
$ git branch --no-merged master
  topicA
  featureB
scroll-to-top