Vraag Hoe de huidige filenaam in Git te krijgen?


Ik kom uit een Subversion-achtergrond en toen ik een filiaal had, wist ik waar ik mee bezig was: "Deze werkbestanden verwijzen naar deze branche".

Maar met Git weet ik niet zeker wanneer ik een bestand aan het bewerken ben in NetBeans of Notepad ++, of het nu verbonden is met de master of met een andere branch.

Er is geen probleem mee git in bash vertelt het me wat ik aan het doen ben.


1711
2018-06-05 20:13


oorsprong


antwoorden:


git branch

moet alle lokale vestigingen van uw repo tonen. De starred branch is je huidige branch.


1295
2018-06-05 20:17



git rev-parse --abbrev-ref HEAD

Dat geeft de huidige tak weer.

Referentie:


3636
2017-08-27 12:33



Jij ook git symbolic-ref HEAD die de volledige refspec weergeeft.

Om alleen de filenaam in Git v1.8 en later te tonen (dank aan Greg voor het wijzen van dat):

$ git symbolic-ref --short HEAD

Op Git v1.7 + kunt u ook:

$ git rev-parse --abbrev-ref HEAD

Beide moeten dezelfde filenaam geven als u op een filiaal bent. Als je alleenstaand bent, verschillen de antwoorden.

Notitie:

Op een eerdere client lijkt dit te werken:

$ git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"

- Darien 26. mrt 2014


399
2017-08-08 15:55



Voor mijn eigen referentie (maar het kan nuttig zijn voor anderen) heb ik een overzicht gemaakt van de meeste (basisopdrachtregel) technieken die in deze thread worden genoemd, elk toegepast op verschillende use cases: HEAD is (wijzend op):

  • lokale branche (master)
  • remote tracking branch, synchroon met lokale branch (origin / master op dezelfde commit als master)
  • remote tracking branch, niet synchroon met een lokale branch (origin / feature-foo)
  • tag (v1.2.3)
  • algemeen vrijstaand hoofd (geen van de bovenstaande)

resultaten:

  • git branch | sed -n '/\* /s///p'
    • lokale tak: master
    • remote tracking branch (in sync): (detached from origin/master)
    • remote tracking branch (niet gesynchroniseerd): (detached from origin/feature-foo)
    • label: (detached from v1.2.3)
    • algemeen vrijstaand hoofd: (detached from 285f294)
  • git status | head -1
    • lokale tak: # On branch master
    • remote tracking branch (in sync): # HEAD detached at origin/master
    • remote tracking branch (niet gesynchroniseerd): # HEAD detached at origin/feature-foo
    • label: # HEAD detached at v1.2.3
    • algemeen vrijstaand hoofd: # HEAD detached at 285f294
  • git describe --all
    • lokale tak: heads/master
    • remote tracking branch (in sync): heads/master (Notitie: niet  remotes/origin/master)
    • remote tracking branch (niet gesynchroniseerd): remotes/origin/feature-foo
    • label: v1.2.3
    • algemeen vrijstaand hoofd: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • lokale tak: ref: refs/heads/master
    • alle andere use-gevallen: SHA van de bijbehorende commit
  • git rev-parse --abbrev-ref HEAD
    • lokale tak: master
    • alle andere use-cases: HEAD
  • git symbolic-ref --short HEAD
    • lokale tak: master
    • alle andere use-cases: fatal: ref HEAD is not a symbolic ref

(Ter info: dit is gedaan met git versie 1.8.3.1)


167
2017-10-25 08:53



Nog een alternatief:

git name-rev --name-only HEAD

118
2017-11-02 19:17



Nou, eenvoudig genoeg, ik heb het in een one liner (bash)

git branch | sed -n '/\* /s///p'

(tegoed: beperkte verzoening)

En terwijl ik daar ben, de enige voering om de remote tracking-tak (indien aanwezig) te krijgen

git rev-parse --symbolic-full-name --abbrev-ref @{u}

87
2018-04-04 15:20



Je kunt gewoon in command line (console) typen op Linux, in de repository directory:

$ git status

en je ziet wat tekst, waaronder iets dat lijkt op:

...
On branch master
...

wat betekent dat je op dit moment aan bent master tak. Als u op dat moment een bestand aan het bewerken bent en het zich in dezelfde lokale repository bevindt (lokale map met de bestanden onder Git version control management), bewerkt u het bestand in deze tak.


48
2018-06-05 20:31



git symbolic-ref -q --short HEAD

Ik gebruik dit in scripts die de huidige filenaam nodig hebben. Het zal u de huidige korte symbolische verwijzing naar HEAD tonen, wat uw huidige filenaam zal zijn.


26
2017-10-02 22:09



git branch | grep -e "^*" | cut -d' ' -f 2

toont alleen de filenaam


24
2018-06-14 13:08



Een opdrachtregeloplossing gevonden van dezelfde lengte als Oliver Refalo's, met behulp van good ol' awk:

git branch | awk '/^\*/{print $2}'

awk leest dat als "doe het spul erin {} op regels die overeenkomen met de regex. "Standaard wordt uitgegaan van door spaties gescheiden velden, dus u drukt de tweede af. Als u kunt aannemen dat alleen de regel met uw filiaal de * heeft, kunt u de ... laten vallen. Ah, bash golf!


21
2018-02-19 22:50



#!/bin/bash
function git.branch {
  br=`git branch | grep "*"`
  echo ${br/* /}
}
git.branch

16
2018-01-23 17:11