Git'te mevcut şube adı nasıl alınır?


2593

Subversion geçmişindeyim ve bir şubem olduğunda "Bu çalışma dosyaları bu dalı işaret ediyor" ile ne üzerinde çalıştığımı biliyordum.

Ancak Git ile NetBeans veya Notepad ++ 'da bir dosyayı düzenlerken, master'a veya başka bir şubeye bağlı olup olmadığımdan emin değilim.

gitBash ile ilgili bir sorun yok , bana ne yaptığımı söylüyor.


11
IDE'nizin dosyayı büyük .git/HEADolasılıkla bir üst dizinde görüntülemesine izin verin
Tino

101
stackoverflow.com/questions/1417957/… $ git rev-parse --abbrev-ref HEAD
fantezik



9
Git 2.22 (Q2 2019) ile, daha basit bir yaklaşım olacaktır: git branch --show-current. Bkz burada cevabımı .
VonC

Yanıtlar:


2304
git branch

deponuzun tüm yerel şubelerini göstermelidir. Yıldızlı dal, geçerli dalınızdır.

Yalnızca bulunduğunuz dalın adını almak istiyorsanız, şunları yapabilirsiniz:

git rev-parse --abbrev-ref HEAD

Ama bu Notepad ++ ve Netbeans ile bana yardımcı olmaz. Sadece git bash (ve Probobly Vim) ve bundan bahsettim. Ben komut satırı olmayan diğer Ide ve metin editörleri ile çalışmak için tring.
mike628

@ mike628 GUI aracılığıyla erişilebilir bir şey istemeniz dışında aslında size yardımcı oluyorlar. Doğru?
Tadeck

2
Eclipse'de çalışmaya hazırsanız, "eGit" adında bir program vardır ve bu programda, içindeki tüm depolar için geçerli dalı size bildirir. Aksi halde, bilmiyorum .. Kullanmak istediğiniz herhangi bir eklentiyi (varsa) uyumlu olan yaratıcısının merhametinde olursunuz.
roberttdev

2
Bir yaptıktan sonra git checkout --orphan fooardından git branchgösteri dalına başarısız foo. Oysa git symbolic-ref HEADönerildiği gibi başka bir cevap işe yaradı.
Marcus Junius Brutus

2
downvote, biz sadece mevcut şube stdout olarak istiyoruz, tüm dalları değil
Alexander Mills

4657

Diğer şubeler listelenmeden, bulunduğunuz dalı görüntülemek için aşağıdakileri yapabilirsiniz:

git rev-parse --abbrev-ref HEAD

Referans:


132
@ChrisNelson, çünkü tüm dalların uzun bir listesi yerine yalnızca geçerli dalı görüntüler.
avakar

73
İyi bir, ne yazık ki 'müstakil KAFA' durumundaysanız işe yaramaz (sadece işe yaramaz 'HEAD' çıktısı).
Carlos Campderrós

34
Eğer bir 'müstakil HEAD' durumunda iseniz git iç tarafından sanırım ait olduğu şube hiçbir izleme yoktur, çünkü git branchgösterir * (no branch), bu da işe yaramaz ...
Carlos Campderrós

76
"git symbolic-ref --short HEAD" aynı amaçla da çalışıyor
dusktreader

22
git rev-parse --abbrev-ref HEAD 2>/dev/null / Dev / null bölümü henüz henüz HEAD olmayan yeni bir havuz oluşturduysanız hata görmenizi engeller.
Paradiesstaub

523

Ayrıca git symbolic-ref HEADtam refspec'i görüntüleyen var .

Yalnızca Git v1.8 ve sonraki sürümlerde şube adını göstermek için (bunu belirttiği için Greg'e teşekkür ederiz):

git symbolic-ref --short HEAD

Git v1.7 + 'da şunları da yapabilirsiniz:

git rev-parse --abbrev-ref HEAD

Bir şubedeyseniz her ikisi de aynı şube adını vermelidir. Eğer müstakil bir kafadaysanız cevaplar farklıdır.

Not:

Daha önceki bir istemcide, bu işe yarıyor gibi görünüyor:

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

- Darien 26 Mart 2014


7
Diğer tüm cevaplar gibi, 'müstakil HEAD' durumundayken bu işe yaramaz
Carlos Campderrós

51
@ CarlosCampderrós: ​​Eğer müstakil HEAD durumundaysanız, mevcut bir şube diye bir şey yoktur. Sonuçta, bulunduğunuz işe sıfır, bir veya daha fazla şube ulaşabilir.
Flimm

2
HEAD olmadığında boş git depolarında sorun çıkarıyor
Arne

8
Git sürüm 2.4.4 ile ne zaman müstakil kafasında olduğunu git rev-parse --abbrev-ref HEADgösterir HEAD.
peterhil

En iyi cevap, ya hiçbir şey ya da KAFA göstermeyen diğer cevapların aksine, ayrı bir durumda olduğu git symbolic-ref HEAD | sed -e "s/^refs\/heads\///" gibi bir dize göstereceğinden hala HEAD detached at a63917f. Bu önemli.
Bernard

265

Kendi referansım için (ancak başkaları için yararlı olabilir) Her biri çeşitli kullanım durumlarına uygulanan bu iş parçacığında bahsedilen çoğu (temel komut satırı) tekniklerine genel bir bakış yaptım: HEAD (işaret ediyor):

  • yerel şube (master)
  • uzaktan takip şubesi, yerel şubeyle senkronize (başlangıç ​​/ master ile aynı taahhütte)
  • uzaktan izleme kolu, yerel bir şube ile senkronize değil (origin / feature-foo)
  • etiketi (v1.2.3)
  • alt modül (alt modül dizininin içinde çalıştır)
  • genel müstakil kafa (yukarıdakilerin hiçbiri)

Sonuçlar:

  • git branch | sed -n '/\* /s///p'
    • yerel şube: master
    • uzaktan izleme dalı (senkronize): (detached from origin/master)
    • uzaktan izleme dalı (senkronize değil): (detached from origin/feature-foo)
    • etiket: (detached from v1.2.3)
    • alt modül: (HEAD detached at 285f294)
    • genel müstakil kafa: (detached from 285f294)
  • git status | head -1
    • yerel şube: # On branch master
    • uzaktan izleme dalı (senkronize): # HEAD detached at origin/master
    • uzaktan izleme dalı (senkronize değil): # HEAD detached at origin/feature-foo
    • etiket: # HEAD detached at v1.2.3
    • alt modül: # HEAD detached at 285f294
    • genel müstakil kafa: # HEAD detached at 285f294
  • git describe --all
    • yerel şube: heads/master
    • uzaktan izleme dalı (senkronize): heads/master(not: değil remotes/origin/master )
    • uzaktan izleme dalı (senkronize değil): remotes/origin/feature-foo
    • etiket: v1.2.3
    • alt modül: remotes/origin/HEAD
    • genel müstakil kafa: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • yerel şube: ref: refs/heads/master
    • alt modül: cat: .git/HEAD: Not a directory
    • diğer tüm kullanım durumları: ilgili taahhüdün SHA'sı
  • git rev-parse --abbrev-ref HEAD
    • yerel şube: master
    • diğer tüm kullanım durumları: HEAD
  • git symbolic-ref --short HEAD
    • yerel şube: master
    • diğer tüm kullanım durumları: fatal: ref HEAD is not a symbolic ref

(Bilginize git git sürüm 1.8.3.1 ile yapıldı)


6
Özetle, hiçbiri elle yapmam gereken şeyi yapmıyor gibi görünüyor.
bukzor

6
Bu benim için oldukça yardımcı oldu: benim git describe --all --exact-match 2>/dev/null | sed 's=.*/=='için en iyi çözümdü (etiketler ve şube kafaları için iyi isimler, rastgele müstakil kafalar için çıktı yok
Alex Dupuy

1
Bununla birlikte, sadece git describeaynı taahhüdüne atıfta bulunan birden fazla dal olduğunda kullanımın ciddi bir başarısızlığa uğradığını keşfettim , örneğin hemen sonra git checkout -b foo- bunlardan birini keyfi olarak kullanıyor (belki de en son yaratılan gibi görünüyor). Filtrelenmiş çıktıyı kullanmak için stratejimi değiştireceğim git branchve yalnızca git describesonuç ayrı bir kafa ile ilgili bir şey olduğunda kullanacağım .
Alex Dupuy

Aslında, git branch --no-colordosya adının can sıkıcı terminal kaçış kodları içermediğinden emin olmak için kullanmam gerekiyor .
Alex Dupuy

2
Bu bana bir kereden fazla yardımcı oldu, çok kapsamlı olduğunuz için teşekkürler!
Alice Purcell


136

Bir alternatif daha:

git name-rev --name-only HEAD

ayrıcaecho ${$(git symbolic-ref --quiet HEAD)#refs/heads/}
Antoine

12
KAFA ana ve özellik dalı için aynıysa (örneğin birleştirme sırasında) çalışmaz. Özellik dalında yürütülmüş olsa bile 'master' değerini döndürür.
Orest Hera

1
git checkout master && git name-rev --name-only HEAD # ac-187Beklendiği gibi çalışmıyor
Alexander Abashkin

Birleştirmeden hemen önce bunu bir değişkene kaydediyorum ve ayrıca belirli bir taahhüdü kontrol edersem HEAD'ımın bağlantısı kesilebilir. Bu durumda bu iyi çalışıyor.
Ishaan Sejwal

4
Bunu bir Jenkins boru hattından yapıyorum. Yani bu benim için en iyi cevap gibi görünüyor. Yapma git branch --listsadece diyor * (HEAD detached at 7127db5). Yapma git rev-parse --abbrev-ref HEADsadece diyor HEADve böyle devam eder.
Mig82

91

Yeterince basit, bir astarda aldım (bash)

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

(kredi: Sınırlı Kefaret)

Ve ben oradayken, uzaktan izleme şubesini almak için tek astar (varsa)

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

8
Çok fazla eğik çizgi! :) sed -n 's/\* //p'hile yapar. Paranoide yönelmeme rağmen, onu demirleyeceğim sed -n 's/^\* //p'.
Mark Reed

64

Linux'ta depo dizinine komut satırını (konsol) yazmanız yeterlidir:

$ git status

ve aralarında aşağıdakine benzer bir metin göreceksiniz:

...
On branch master
...

yani şu anda masterdaldasınız demektir. O anda herhangi bir dosyayı düzenliyorsanız ve aynı yerel depoda bulunuyorsa (Git sürüm kontrol yönetimi altındaki dosyaları içeren yerel dizin), bu daldaki dosyayı düzenlersiniz.


2
Ne yapmak istediğinize bağlı olarak, git statusyalnızca ilk çıktı satırını kullanabilir ve git status | head -1bunun gibi bir şey elde edebilirsiniz # On branch master. Eminim sürüm farkları da hesaba katılmalıdır.
Joshua Pinter

@JoshPinter: git status | grep 'On branch'Aynı etkiye sahip olması gereken ( ayrıca , Git sürümünüzün farklı gösterdiği anlamına gelmez) da kullanabilirsiniz. Veya git branch | grep '*', başlangıcında bir yıldız bulunan dalın adını gösterecektir.
Tadeck

Evet, bu da işe yarıyor ve daha esnek olabilir. Bir dev Rails uygulamasında sadece şube adını göstermek için son <tick>git status | head -1<tick>.gsub('# On branch ', '')
sonucum

1
git statusyönetilen çok sayıda dosya varsa, bir değeri döndürmek uzun sürebilir.
Teneke Adam

Örneğin, şubeyi bir web sayfasına yazdırmak istiyorsanız, git statussayfanın tüm oluşturma süresini biriktirebilir.
Artem Russakovskii

36
git symbolic-ref -q --short HEAD

Bu geçerli şube adını gerektiren komut dosyalarında kullanın. Mevcut şube adınız olacak olan HEAD'e geçerli kısa sembolik referansı gösterecektir.


1
Teşekkürler, harika çalışıyor! - Bununla birlikte betiğime "-C path_to_folder" ekliyorum.
Tony

1
-Q seçeneği ile "ayrılmış HEAD" durumunda bir hata kodu döndürür ancak stderr için hiçbir şey yazdırmaz, çünkü bu güzel bir çözümdür.
hallidave

Bu benim için herhangi bir taahhüt olmadan taze bir repo üzerinde çalışan tek çözüm
kundasaba

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

sadece şube adını gösterecek


Şube böyle bir şey gösteriyorsa "* (HEAD SUM_BRANCH_01'de ayrılmış)", o zaman bu "git branch | grep -e" ^ * "| cut -d '' -f 5 | cut -d ')' -f 1 "
Dylan Kapp

Şimdiki şube adını almak için aynı komut dosyasını oluşturdum. Diffs ile yardımcı olabileceğini düşündüm.
tggagne

25

git branch yalnızca geçerli şube adını göster.

Git şubesi size tüm dalları gösterecek ve geçerli olanı yıldız işareti ile vurgulasa da, çok sayıda dalla çalışırken çok hantal olabilir.

Yalnızca şu anda bulunduğunuz dalı göstermek için şunu kullanın:

git rev-parse --abbrev-ref HEAD

Bu CI ve diğer yapı araçları için harika!
phouse512

bir senaryoda kullanmak için en iyi cevap
Ben Keil

1
@DylanNicholson git branch --containsbazen birden fazla şubeyi listeler.
Joe Chacko

22

İle aynı uzunlukta bir komut satırı çözümü bulundu İyi ol 'awk kullanarak Oliver Refalo'nunkiyle :

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

awkbunu {}"normal ifadeyle eşleşen satırlarda yer alan şeyler" olarak okur . Varsayılan olarak boşlukla ayrılmış alanları varsayar, böylece ikincisini yazdırırsınız. Yalnızca dalınızdaki satırın * olduğunu varsayarsanız, ^ öğesini bırakabilirsiniz. Ah, golf bas!


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

18

Neden geçerli dalın adını söyleyen git -cious kabuk istemini kullanmıyorsunuz? git statusAyrıca yardımcı olur.


Nasıl git-prompt.sh gelen contrib/tanımlanan, (git sürüm 2.3.0) yapar __git_ps1yardımcı işlevi:

  1. İlk olarak, devam eden rebase tespit edilirse özel bir durum söz konusudur . Git, yeniden adlandırma işlemi sırasında adsız dal (ayrılmış HEAD) kullanır ve atomik hale getirir ve orijinal dal başka bir yere kaydedilir.

  2. Eğer .git/HEADdosya (Git antik geçmişinden çok nadir durumda,) sembolik bir bağlantı olduğunu, kullandığıgit symbolic-ref HEAD 2>/dev/null

  3. Else, .git/HEADdosyayı okur . Sonraki adımlar içeriğine bağlıdır:

    • Bu dosya yoksa, geçerli bir dal yoktur. Bu genellikle depo çıplaksa olur.

    • 'ref: 'Önek ile başlarsa .git/HEAD, symref (sembolik referans) olur ve normal daldayız. Tam adı almak için bu öneki soyun refs/heads/ve geçerli dalın kısa adını almak için soyun :

      b="${head#ref: }"
      # ...
      b=${b##refs/heads/}
      
    • Onunla başlamazsa 'ref: ', o zaman bazı işlemek için doğrudan işaret ederek, HEAD (anonim dalı) ayrılır. git describe ...Geçerli taahhüdü insan tarafından okunabilir biçimde yazmak için kullanın .

Umarım bu yardımcı olur.


3
Ve git-farkında bir kabuk istemi geliştiriyorsanız, buradaki cevaplardan hangisini kullanmalısınız? Kaplumbağalar tamamen aşağı.
tripleee

1
@tripleee: Fikirleri github.com/git/git/blob/master/contrib/completion/git-prompt.sh adresinden ödünç alın
Jakub Narębski

4
Hangi kayıt için yapıyor gibi görünüyor, git describe --contains --all HEADben şu anda bu sayfada başka bir yerde görmüyorum. Bildiğim gibi, yalnızca bağlantı yanıtları StackOverflow'da önerilmez.
tripleee

2
@tripleee: git-prompt.sh(aka __git_ps1) nasıl yapıyor bir açıklama ekledim ...
Jakub Narębski

17

Git durumu için daha az gürültülü bir sürüm hile yapar

git status -bsuno

Çıktı

## branch-name

1
## geliştirmek ... kökeni / geliştirmek
Kalpesh Soni

16

Maalesef bu başka bir komut satırı yanıtı, ancak bu soruyu bulduğumda aradığım şey bu ve cevapların çoğu yardımcı oldu. Benim çözüm aşağıdaki bash shell fonksiyonudur:

get_branch () {
    git rev-parse --abbrev-ref HEAD | grep -v HEAD || \
    git describe --exact-match HEAD 2> /dev/null || \
    git rev-parse HEAD
}

Bu bana her zaman hem insan tarafından okunabilir hem de doğrudan bir argüman olarak kullanılabilecek bir şey vermelidir git checkout.

  • yerel bir şubede: feature/HS-0001
  • etiketli bir taahhütte (müstakil): v3.29.5
  • uzak bir dalda (ayrılmış, etiketlenmemiş): SHA1
  • diğer müstakil taahhütlerde: SHA1

1
Bunu gönderdiğiniz için teşekkürler, diğer cevapların hiçbiri her zaman bir argüman olarak kullanılabilir bir şey üretmeyi umursamadı git checkout.
zwol

15

çalışma dizini komutunda git bash kullanabilirsiniz aşağıdaki gibidir

git status -b

hangi dalda olduğunuzu söyleyecek, bazılarının yararlı olduğu birçok komut var.

-s

--short Çıkışı kısa biçimde verin.

-b --branch Şube ve izleme bilgilerini kısa formatta bile gösterir.

--porcelain [=] Komut dosyaları için çıktıyı ayrıştırması kolay bir biçimde verin. Bu kısa çıktıya benzer, ancak Git sürümlerinde ve kullanıcı yapılandırmasından bağımsız olarak sabit kalır. Ayrıntılar için aşağıya bakın.

Version parametresi, biçim sürümünü belirtmek için kullanılır. Bu isteğe bağlıdır ve orijinal sürüm v1 biçimini varsayılan olarak kullanır.

--long Çıkışı uzun biçimde verin. Bu varsayılan ayardır.

-v --verbose Değiştirilen dosyaların adlarına ek olarak, işlenmeye hazırlanan metinsel değişiklikleri de gösterir (örneğin, git diff --cached çıktısı gibi). -V iki kez belirtilirse, çalışma ağacında henüz aşamalandırılmamış değişiklikleri de gösterir (örneğin, git diff çıktısı gibi).


14
git status 

ayrıca şube adını değişikliklerle birlikte verecektir.

Örneğin

>git status
On branch master // <-- branch name here
.....

13

Zamanla, çok uzun bir şube listemiz olabilir.

Diğer çözümlerden bazıları harika olsa da, İşte yaptığım şey (Jacob'un cevabından basitleştirilmiş):

git branch | grep \*

Şimdi,

git status

çalışır, ancak yalnızca herhangi bir yerel değişiklik varsa


13

Bu iki komuttan herhangi birini kullanmanızı öneririm.

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

VEYA

git status | sed -n 1p | cut -d' ' -f 3

VEYA (daha ayrıntılı)

git status -uno -bs| cut -d'#' -f 3 | cut -d . -f 1| sed -e 's/^[ \t]//1'| sed -n 1p


12

Netbeans'te sürüm oluşturma ek açıklamalarının etkinleştirildiğinden emin olun (Görünüm -> Sürüm Etiketleri Göster). Daha sonra proje adının yanında şube adını görebilirsiniz.

http://netbeans.org/bugzilla/show_bug.cgi?id=213582


Sürüm açıklamaları etkinleştirildiğinde, geçerli dalı görmek için tek yapmanız gereken farenizi Proje (veya Dosya veya Sık Kullanılan) klasörünün üzerine getirmektir.
idclaar

12

Peki buna ne dersin?

{ git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null } | sed "s#refs/heads/##"

1
Çok daha iyi cevap, çünkü ayrılmış HEAD kasasını iyi idare ediyor.
Pat

2
Git komutlarını kaydırmak için {} değil () kullanmanız gerekiyor gibi görünüyor
Pat

@Pat () yaptığı gibi, bunun için ayrı bir alt kabuk oluşturmaya gerek yoktur. {} iyidir, ancak bir eklemeniz gerekmez; veya yeni satır}. Aslında, komutları gruplandırmanız gerekmedikçe {} 'i tamamen bırakabilirsiniz.
aij

Does not symbolic-refkısmı da ihtiyaç --shortile BRANCHNAME adýnýnönüne önlemek için refs/heads/?
rjp

11

Geçerli şube adını yazdırır git-cbr( geçerli şube ) adlı basit bir komut dosyası var .

#!/bin/bash

git branch | grep -e "^*"

Bu komut dosyasını özel bir klasöre ( ~/.bin) koydum . Klasör içinde $PATH.

Şimdi bir git deposunda olduğumda, sadece git cbrgeçerli şube adını yazdırmak için yazıyorum .

$ git cbr
* master

Bu, gitkomutun ilk bağımsız değişkenini alıp adıyla giden bir komut dosyasını çalıştırmaya çalıştığı için çalışır git-arg1. Örneğin , vb. git branchAdlı bir komut dosyasını çalıştırmayı dener git-branch.


11

Bash çıkışınızı kalıcı olarak git-dal adınızı gösterecek şekilde ayarlayabilirsiniz. Farklı dallarla çalışırken çok kullanışlıdır, her zaman yazmaya gerek yoktur $ git status. Github repo git -cious -istemi .

Terminalinizi açın (ctrl-alt-t) ve komutları girin

mkdir ~/.bash
cd ~/.bash
git clone git://github.com/jimeh/git-aware-prompt.git

.Bashrc dosyanızı sudo nano ~/.bashrc(Ubuntu için) komutuyla düzenleyin ve aşağıdakileri ekleyin:

export GITAWAREPROMPT=~/.bash/git-aware-prompt
source "${GITAWAREPROMPT}/main.sh"

Sonra kodu yapıştırın

export PS1="\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ "

aynı dosyanın sonunda kurulum kodunu daha önce yapıştırdınız. Bu size renklendirilmiş çıktı verecektir:resim açıklamasını buraya girin


10

Aşağıdaki kabuk komutu, şu anda bulunduğunuz dalı bildirir.

git branch | grep ^\*

Şubeyi her bilmek istediğinizde ve Bash'ı kullandığınızda bu uzun komutu yazmak istemiyorsanız, komuta kısa bir takma ad verin, örneğin takma ad cb.

alias cb='git branch | grep ^\*'

Şube yöneticisinde olduğunuzda ve isteminiz olduğunda $, * masteraşağıdaki gibi alacaksınız .

$ cb
* master

Bu soruya bir cevap sağlamaz. Bir yazardan eleştiri veya açıklama istemek için gönderilerinin altına bir yorum bırakın. - Yorumdan
Rashwan L

1
Neden böyle düşünüyorsun?
mrrusof

OP için yayınınızı yorumlamalı ve açıklamalısınız, bu şekilde yayınınızı anlamak daha kolay olacaktır.
Rashwan L

1
Mantıklı gelir.
mrrusof

1
zsh kullanıyorsanız, grep normal git branch | grep '^\*'
ifadesini

9

Ayrılmış kafadayken şube adını veya SHA1 değerini döndürür:

git rev-parse --abbrev-ref HEAD | grep -v ^HEAD$ || git rev-parse HEAD

Bu, @ dmaestro12'nin yanıtı ve etiket desteği olmayan kısa bir sürümüdür.


8
daha iyi:git symbolic-ref --quiet --short HEAD || git rev-parse --short HEAD
blueyed

8

Son dalın / etiketin gerçekten ayrılmış HEAD durumunda da teslim edilmesini istiyorsanız.

git reflog HEAD | grep 'checkout:' | head -1 | rev | cut -d' ' -f1 | rev

Güncelleme Eğer awk varsa ve korkmuyorsanız, bu daha güzel.

git reflog HEAD | grep 'checkout:' | head -1 | awk '{print $NF}'

rev | cut -d' ' -f1| revile basitleştirilmiş olabilirawk '{print $NF}'
Steve Buzonas

1
Bu da kusursuz değildir, çünkü karma ile belirli bir revizyonu kontrol edebilirsiniz, böylece reflog sadece checkout: moving from ba7571b7fc5b8f31b8d0625821269afaa655577e to f68be8cf7bea917a5a0562b619e50368de0068a9bazı vakaları belirsizleştirmeye yardımcı olabilecek hala yararlı bir numara olduğunu gösterir .
Alex Dupuy

1
Daha da kısaltmakgit reflog | awk '$3=="checkout:" {print $NF; exit}'
jthill

6

Bu geç olduğunu biliyorum ama bir linux / mac, terminalden aşağıdakileri kullanabilirsiniz.

git status | sed -n 1p

Açıklama:

git status -> çalışma ağacı durumunu alır
sed -n 1p -> durum satırından ilk satırı alır

Yukarıdaki komutun yanıtı aşağıdaki gibi görünecektir:

"On branch your_branch_name"

2
head -1her zamanki gibi
bukzor

5

GIT_BRANCH değişkenini burada görüldüğü gibi de kullanabilirsiniz: https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

Git eklentisi, komut dosyalarınızda kullanabileceğiniz çeşitli ortam değişkenleri belirler:

GIT_COMMIT - geçerli SHA

GIT_BRANCH - Şu anda kullanılmakta olan dalın adı, örneğin "master" veya "origin / foo"

GIT_PREVIOUS_COMMIT - Aynı şubeden önceki inşa edilmiş taahhüdün SHA'sı (şubedeki ilk derlemede geçerli SHA)

GIT_URL - Havuz uzak URL'si

GIT_URL_N - 1'den fazla uzaktan kumanda olduğunda depo uzak URL'leri, ör. GIT_URL_1, GIT_URL_2

GIT_AUTHOR_EMAIL - Committer / Yazar E-postası

GIT_COMMITTER_EMAIL - Committer / Yazar E-postası


5

PS1Mac kullanarak ekleyin :

PS1='\W@\u >`[ -d .git ] && git branch | grep  ^*|cut -d" " -f2`> $ '

Yukarıdaki komutu çalıştırmadan önce:

resim açıklamasını buraya girin

Bu komutu çalıştırdıktan sonra:

resim açıklamasını buraya girin

Endişelenmeyin, GIT deposu [-d .git]değilse, .gitklasörün var olup olmadığını kontrol ettiği için hata göstermez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.