2012-09-05 15 views
199

Birçok dalla bir git depom var, bunların bir kısmı zaten birleştirilmiş ve değil. Şube sayısı oldukça büyük olduğundan, hangi şubelerin henüz birleştirilmediğini nasıl bilebilirim? Yine tüm dalları yeniden bir ahtapot birleştirme yapmaktan kaçınırdım.git dallanmayan dalları bulma

cevap

333

bu deneyin:

git branch --merged master 

Teneke (master haline getirildi listeleri dallar) ne diyor. Ayrıca ile ters alabilmenin: Eğer master belirtmezseniz

git branch --no-merged master 

, mesela ..

git branch --merged 

sonra o kadar (aktüel HEAD haline getirildi dalları gösterecektir master üzerindeyseniz, ilk komutla eşdeğerdir; foo üzerindeyseniz, git branch --merged foo eşdeğeridir). Bir şube zaten birleştirilmişse yeniden birleştirme

git branch -r --no-merged origin/master 
+2

Eğer 'foo'yu' master' içine birleştirirseniz, 'git branch --mered master' listesinde görünecektir. Ama bir kez daha "foo" yapsan ne olur? Artık bu listede görünmüyor mu, yoksa yeni taahhütlere sahip olduğu gibi, bir noktada * "master" ile birleştirildi mi? –

+6

@CraigOtis Artık listede görünmeyecek. "--merged" sadece verilen dalda * tamamen * olan şubeleri listeler. – Amber

+0

ve 'gitk --remotes --not origin/master' size master olmak için birleştirilmemiş her daldaki taahhütleri gösterecektir. – yoyo

25

olmaz:

Ayrıca -r bayrağı ve yerel veya uzak olabilir karşı kontrol etmek için bir ref, belirterek memba dalları karşılaştırabilirsiniz birşeyler yap. Yani birleştirilmiş olan "yeniden birleştirme" dalları hakkında endişelenmenize gerek yok.

sadece

git branch --merged 

birleştirilmemiş dalları görmek için birleşti şube veya

git branch --no-merged 

görmek verebilir, sorunuzu cevaplamak için. Mevcut şubeniz ima edildi, ancak isterseniz diğer şubeleri belirtebilirsiniz.

git branch --no-merged integration 

Henüz sizi integration dalı içine birleştirilmez dalları gösterecektir.

36

Ayrıca usta birleştirilecek değildi uzak dalları göstermek için -r parametresini kullanabilirsiniz: Aşağıdaki komut geçerli şubesi önde olan tüm origin/* şube bulacaksınız

git branch -r --merged master 

git branch -r --no-merged 
+14

veya aynı anda hem yerel hem de yerel olarak görmek için –

1

#!/bin/bash 

CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) 

echo -e "Current branch: \e[94m$CURRENT_BRANCH\e[0m" 
echo '' 

git branch -a | grep remotes/origin/ | while read LINE 
do 
    CMD="git diff --shortstat remotes/origin/${CURRENT_BRANCH}...${LINE}" 

    if $CMD | grep ' file' > /dev/null; then 
     echo -e "\e[93m$LINE\e[0m" | sed 's/remotes\/origin\///' 
     $CMD 
     echo '' 
    fi 
done 

The up-to-date version of the script