Jeg kommer fra en Subversion-baggrund, og når jeg havde en filial, vidste jeg, hvad jeg arbejdede på med "Disse arbejdsfiler peger på denne filial".


Men med Git er jeg ikke sikker på, når jeg redigerer en fil i NetBeans eller Notepad++, om den er bundet til master eller en anden gren.


Der'er ikke noget problem med `git` i bash, den fortæller mig hvad jeg'laver.


Hvordan får man det aktuelle grennavn i Git?
============================================



```
git branch
```

bør vise alle de lokale grene af dit repo. Den stjernemarkerede gren er din aktuelle gren.


Hvis du kun vil hente navnet på den gren, du befinder dig på, kan du gøre det:



```
git branch | grep \* | cut -d ' ' -f2
```

Du kan bare skrive i kommandolinjen (konsol) på Linux i mappen med arkivet:



```
$ git status
```

og du vil se noget tekst, blandt andet noget, der ligner:



```
...
On branch master
...
```

hvilket betyder, at du i øjeblikket befinder dig på `master`-gren. Hvis du redigerer en fil på det tidspunkt, og den befinder sig i det samme lokale repository (lokal mappe, der indeholder de filer, der er under Git-versionskontrolstyring), redigerer du filen i denne gren.


Hvorfor ikke bruge git-aware shellprompt, som ville fortælle dig navnet på den aktuelle gren? `git status` hjælper også.




---


Hvordan [git-prompt.sh](https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh) fra `contrib/` gør det (git version 2.3.0), som defineret i hjælpefunktionen `__git_ps1`:


1. For det første er der et specialtilfælde, hvis *rebase* in progress er opdaget. Git bruger unavngiven gren (detached HEAD) under rebase-processen for at gøre den atomar, og den oprindelige gren gemmes et andet sted.
2. Hvis filen `.git/HEAD` er et symbolsk link (et meget sjældent tilfælde, fra Gits gamle historie), bruger den `git symbolic-ref HEAD 2>/dev/null`
3. Ellers læser den filen `.git/HEAD`. De næste trin afhænger af dens indhold:


* Hvis denne fil ikke findes, er der ingen aktuel filial. Dette sker normalt, hvis repositoriet er nøgent.
* Hvis den starter med præfikset `'ref: '`, så er `.git/HEAD` symref (symbolsk reference), og vi er på en normal gren. Fjern dette præfiks for at få det fulde navn, og fjern `refs/heads/` for at få det korte navn på den aktuelle gren:



```
     b="${head#ref: }"
     # ...
     b=${b###refs/heads/}
```
* Hvis det ikke starter med `'ref: '`, så er det en løsrevet HEAD (anonym gren), der peger direkte på et eller andet commit. Brug `git describe ...` til at skrive det aktuelle commit i menneskeligt læsbar form.


Jeg håber, at det hjælper.

