Birləşdirilmiş bütün qapaqları necə aradan qaldırmaq olar?

Məndə çoxlu filial var. Birləşdirilmiş olan filialları necə silmək olar? Onları tək-tək silmək deyil, hamısını aradan qaldırmaq üçün asan bir yol varmı?

1394
25 мая '11 в 18:54 2011-05-25 18:54 Nyambaa , 25 May 'da 18:54' də təyin olunub 2011-05-25 18:54
@ 40 cavab
  • 1
  • 2

ƏLAVƏ OLUNUB:

Əgər işiniz mümkün bir ata kimi olsa, onları master və dev kimi istisna etmək üçün başqa şöbələr əlavə edə bilərsiniz. Mən adətən sprint-start etiketini işləmirəm və master, dev və qa atalar deyildir.

Zaten mövcud markalı şubeye birleştirilen bütün yerli şubeleri silmək üçün:

 git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d 

Əgər ata olsalar, master və dev xaricində olduğunu görə bilərsiniz.


Birləşdirilmiş yerli filialı silə bilərsiniz:

 git branch -d branchname 

Birləşdirilmirsə, istifadə edin:

 git branch -d branchname 
border=0

Git'in köhnə versiyalarında konsoldan çıxarmaq üçün aşağıdakıları istifadə edin:

 git push origin :branchname 

Git'in son versiyalarında istifadə edin:

 git push --delete origin branchname 

Uzaq bir cihazdan filialı sildikdən sonra, uzaqdan izləmə filiallarından qurtarmaq üçün trimleyebilirsiniz:

 git remote prune origin 

və ya başqa bir cavab təklif etdiyi kimi, uzaqdan izlənmənin fərdi şöbələrini düzəldin:

 git branch -dr branchname 

Bu kömək edir.

2352
25 мая '11 в 19:40 2011-05-25 19:40 cavab 25 may 2011- ci il saat 19: 40-da Adam Dymitruk tərəfindən verilmişdir 2011-05-25 19:40

Zaten birleştirilmiş bir uzaq serverdaki bütün şubeleri silmək üçün:

 git branch -r --merged | grep -v master | sed 's/origin\//:/' | xargs -n 1 git push origin 
border=0

Git'in sonrakı versiyalarında

 git branch -r --merged | grep -v master | sed 's/origin\///' | xargs -n 1 git push --delete origin 
340
09 авг. Cavab kuboon 09 avqust verilir . 2013-08-09 11:45 '13 saat 11:45 'da 2013-08-09 11:45

Adamı bir az genişləndirir:

Bunu git config -e --global

 [alias] cleanup = "!git branch --merged | grep -v '\\*\\|master\\|develop' | xargs -n 1 git branch -d" 

Sonra sadə bir git cleanup bütün yerli birləşən filialları silə bilərsiniz.

140
18 февр. cavab real_ate 18 feb verilir . 2014-02-18 18:08 '14 at 18:08 2014-02-18 18:08

Həmçinin ustad xaricində bütün birləşən filialları silmək imkanı verir.

 git branch --merged | grep -v '^* master$' | grep -v '^ master$' | xargs git branch -d 
73
07 февр. Cavab İsmael Abreu tərəfindən 07 fevral. 2013-02-07 04:06 '13 'da 4:06' da 2013-02-07 04:06

master şöbələri istisna etmək və bu əmrlərdən develop etmək istəyirsiz.

Yerli təmizləmək:

 git branch --merged | grep -v '\*\|master\|develop' | xargs -n 1 git branch -d 

Uzaqdan təmiz təmizləmə:

 git branch -r --merged | grep -v '\*\|master\|develop' | sed 's/origin\///' | xargs -n 1 git push --delete origin 

Uzaq filialların yerli qeydiyyatı sinxronlaşdırın:

 git fetch -p 
60
03 июля '14 в 19:18 2014-07-03 19:18 Cavab Guido Bouman tərəfindən 03.07.2014 tarixində 19:18 2014-07-03 19:18

Windows-da olanlar və PowerShell skriptlərindən üstün olanlar üçün yerli birləşən şöbələri silir:

 function Remove-MergedBranches { git branch --merged | ForEach-Object { $_.Trim() } | Where-Object {$_ -NotMatch "^\*"} | Where-Object {-not ( $_ -Like "*master" )} | ForEach-Object { git branch -d $_ } } 
36
10 июня '14 в 17:00 2014-06-10 17:00 Cavab Klas Mellbourn tərəfindən 10 İyun '14 'də saat 17: 00-da veriləcək

Git Sweep bu işlə məşğul olur.

19
04 февр. Cavab paul verilir 04 fevral. 2013-02-04 16:53 '13 'da 16:53 2013-02-04 16:53

Birləşdirilmiş seçimə bir öhdəlik əlavə edə bilərsiniz. Beləliklə, yəni mənşə / masterda birləşdirilmiş yalnız filialların silinməsindən əmin ola bilərsiniz.

Aşağıdakı əmr mənbəyinizdən birləşən şüaları aradan qaldıracaq.

 git branch -r --merged origin/master | grep -v "^.*master" | sed s:origin/:: |xargs -n 1 git push origin --delete 

Qovun başlanğıcını əvəz etməklə hansı filialların silinəcəyini yoxlaya bilərsiniz

 git branch -r --merged origin/master | grep -v "^.*master" | sed s:origin/:: |xargs -n 1 echo 
13
08 июля '14 в 9:28 2014-07-08 09:28 Cavab Jörn Reimerdes tərəfindən 08.07.2014 09:28 2014-07-08 09:28

Git versiyası 2.5.0 istifadə edərək:

 git branch -d `git branch --merged` 
12
14 сент. Cavab verilir . 2015-09-14 19:20 '15 saat 19:20 'da

Zaten birleştirilmiş yerli və uzaq filialları aradan qaldırılması üçün aşağıdakı Ruby scriptini istifadə edirəm. Bunu bir neçə uzaq qurğu ilə bir köşk üçün edərəm və sadəcə onu aradan qaldırmaq istəyirsənsə, sadəcə uzaqdan uzaq modulları əldə etmək üçün uzaq kompüterlər siyahısına yalnız seçilmiş bəyanatı əlavə edirəm.

11
28 сент. Cavab 28 sentyabrda mmrobins tərəfindən verilir 2012-09-28 02:41 '12 at 2:41 am 2012-09-28 02:41

Kubun filialın adına sözü olan filialların silinməsinə cavab verin. Aşağıdakı cavabı yaxşılaşdırır:

 git branch -r --merged | grep -v "origin/master$" | sed 's/\s*origin\///' | xargs -n 1 git push --delete origin 

Əlbəttə ki, "əsas" birisini silmir :)

8
04 окт. Cavab Paras 04 oktyabr verilir . 2013-10-04 09:05 '13 saat 09:05 'da 2013-10-04 09:05

PowerShell konsolunda birləşən filialləri çıxarın

 git branch --merged | %{git branch -d $_.Trim()} 

Windows üçün GitHub-a baxın

8
27 янв. 27 yanvar Konstantin Tarkus tərəfindən verilən cavab 2015-01-27 17:17 '15 at 17:17 'də 2015-01-27 17:17

Gitdə avtomatik olaraq bunu edəcək bir əmr yoxdur. Amma sizə lazım olanları vermək üçün Git əmrlərindən istifadə edən bir yazı yaza bilərsiniz. Bu istifadə edilən şöbə modelindən asılı olaraq müxtəlif yollarla edilə bilər.

Bir şöbənin master ilə birləşdirildiyini bilmək istəsəniz, myTopicBranch birləşdirildiyi təqdirdə aşağıdakı əmr işləməyəcək (yəni onu silə bilərsiniz)

 $ git rev-list master | grep $(git rev-parse myTopicBranch) 

Git şöbəsinin komandanlığından istifadə edə və bütün şöbələri Bəşdə analiz edə və bütün şöbələrdə formanı icra edə bilərsiniz. Bu döngədə siz filialı silmək və ya silmək üçün yuxarıda göstərilən əmrlə əlaqə saxlayın.

7
26 мая '11 в 10:41 2011-05-26 10:41 cavab 26 may 2011 -ci il saat 10: 41 -da verilir

git branch --merged | grep -Ev '^(. master|\*)' | xargs -n 1 git branch -d git branch --merged | grep -Ev '^(. master|\*)' | xargs -n 1 git branch -d , mövcud filial və / və ya master istisna olmaqla bütün yerli şöbələri silməyəcək.

Bu əmrləri anlamaq istəyənlər üçün faydalı bir məqalə: Git Clear: zaten birləşən filialları silmək, Stephen Harman tərəfindən .

6
24 окт. Cavab verilən 24 hektar cədvəl . 2014-10-24 00:06 '14 'də 0:06 2014-10-24 00:06

Uzun illərdir ki, Adəmin cavablarını istifadə etdim. Ancaq, gözlənilən kimi davranmadığı zamanlar var:

  1. "master" sözünü ehtiva edən şöbələr, məsələn, "notmaster" və ya "ustad" deyil, yalnız aparıcı filialı
  2. "dev" sözünü ehtiva edən şöbələr, məsələn, "dev-test" deyil, yalnız dev şöbəsi kimi görüldü
  3. mövcud şöbənin rəhbəri tərəfindən çatdırılan filialların silinməsi (yəni mütləq aparıcı deyil)
  4. ayrı bir HEAD dövlətində, hər bir şöbənin mövcud törətmədən əlçatan silinməsi

1 və 2-ə sadəcə müntəzəm ifadələrdəki bir dəyişiklik ilə müraciət edilmişdir. 3 istədiyiniz hər hansı bir kontekstdən asılıdır (yəni bir ustaya və ya mövcud şöbəyə qarşı birləşdirilməmiş filialları silin). 4 fəlakət ola bilər ( git reflog ilə bərpa olmasına baxmayaraq), əgər yanlışlıkla git reflog bu ayrı bir HEAD dövlətindədir.

Nəhayət, bütün bunları bir təbəqədə olmasını istəmişdim, bunun üçün ayrıca (Bash | Ruby | Python) skript tələb olunmurdu.

Tl; DR

İstiqamət -f bayrağını qəbul edən bir git-alias "sweep" yaradın:

 git config --global alias.sweep '!f(){ git branch --merged $([[ $1 != "-f" ]] \  git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" \ | xargs git branch -d; }; f' 

və bunu zəng edin:

 git sweep 

və ya

 git sweep -f 

Uzun, ətraflı cavab

Bəzi şöbələrlə qap repo nümunəsi yaratmaq mənim üçün asan idi və düzgün davranışı yoxlamaq üçün əmr etdi:

Bir əmr ilə yeni bir git deposunu yaradın

 mkdir sweep-test  cd sweep-test  git init echo "hello" > hello git add .  git commit -am "initial commit" 

Yeni filialların yaradılması

 git branch foo  git branch bar  git branch develop  git branch notmaster  git branch masterful git branch --list 
  bar develop foo * master masterful notmaster 

İstədiyiniz davranış: istisna olmaqla, birləşdirilmiş bütün filialları seçin: master, inkişaf və ya mövcud

Orijinal müntəzəm ifadə "ustalı" və "notmaster" filiallarını atır:

 git checkout foo git branch --merged | egrep -v "(^\*|master|dev)" 
  bar 

Yenilənmiş müntəzəm ifadə ilə (indi "inkişaf etdirmək" istisna olmaqla, "dev" deyil):

 git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)" 
 bar masterful notmaster 

Foo şöbəsinə keçin, yeni bir töhfə verin, sonra foo əsasında yeni foobar şöbəsini yoxlayın:

 echo "foo" > foo git add .  git commit -am "foo" git checkout -b foobar echo "foobar" > foobar git add .  git commit -am "foobar" 

Mənim cari filial foobardır və silmək istənilən filialların siyahısı üçün yuxarıdakı əmrləri yenidən işlətsəm, "foo" şöbəsi sihirbaza birləşməsə də, aktivdir:

 git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)" 
  bar foo masterful notmaster 

Lakin, eyni əmri ustada idarə etsəm, "foo" şöbəsi açılmır:

 git checkout master  git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)" 
  bar masterful notmaster 

Və budur, sadəcə, git branch --merged başqa cür göstərilmədiyi halda mövcud filialın git branch --merged cavab verir. Ən azı mənim işim üçün yerli şöbələri silmək istəmirəm, əgər onlar ustaya birləşməmişlərsə, mən aşağıdakı seçimləri üstün tuturam:

 git checkout foobar git branch --merged $(git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" 
  bar masterful notmaster 

Ayrı HEAD dövlət

git branch --merged default davranışına əsaslanan - ayrı HEAD dövlətində daha ciddi nəticələrə səbəb olur:

 git checkout foobar git checkout HEAD~0 git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)" 
  bar foo foobar masterful notmaster 

Bu, sadəcə olaraq istənilən nəticə deyil, "foo" ilə yanaşı, "foobar" da qaldığım şəffaflığı aradan qaldıracaq. Yenə də revize edilmiş komandamızla:

 git branch --merged $(git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" 
  bar masterful notmaster 

Əsl silinmə daxil olmaqla bir satır

 git branch --merged $(git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" | xargs git branch -d 

Bütün keçməmiş ləqəb "sweep":

 git config --global alias.sweep '!f(){ git branch --merged $([[ $1 != "-f" ]] \  git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" \ | xargs git branch -d; }; f' 

-f əlavə bir -f bayrağını qəbul edir. Varsayılan olaraq, usta birləşən filialların yalnız silinməsi istifadə olunur, amma -f bayrağı mövcud filiala birləşdirilmiş olan filialları rədd edir.

 git sweep 
 Deleted branch bar (was 9a56952). Deleted branch masterful (was 9a56952). Deleted branch notmaster (was 9a56952). 
 git sweep -f 
 Deleted branch foo (was 2cea1ab). 
6
20 июля '18 в 9:48 2018-07-20 09:48 cavab iyul ayının 20-də, saat 18: 00-da , 2018-07-20 09:48 ilə verilir

Adəmin ləqəbi versiyası yeniləndi :

 [alias] branch-cleanup = "!git branch --merged | egrep -v \"(^\\*|master|dev)\" | xargs git branch -d #" 

Həmçinin bu cavabları, kompleks takma adların qorunması üçün faydalı məsləhətlər üçün baxın.

5
30 сент. Eliot 30 Sentyabr. 2016-09-30 22:54 '16 saat 10:54 'da 2016-09-30 22:54

Siz git-del-br alətindən istifadə edə bilərsiniz.

 git-del-br -a 

Istifadə edərək pip vasitəsilə yükleyebilirsiniz

 pip install git-del-br 

PS: Mən alətin müəllifiyim. Hər hansı bir təklif / geribildirim xoş gəlmisiniz.

5
19 июля '16 в 21:50 2016-07-19 21:50 Cavab 19 Yanvar, 19: 20-da, düşərmakkar08 2016-07-19 21:50 tarixində verilir

Aşağıda tələb mənim üçün işləyir

 for branch in 'git branch -r --merged | grep -v '\*\|master\|develop'|awk 'NR > 0 {print$1}'|awk '{gsub(/origin\//, "")}1'';do git push origin --delete $branch; done 

və grep kanalı içərisində hər hansı filialı filtreleyecektir.

Http klonunda yaxşı işləyir, lakin ssh əlaqələri üçün yaxşı deyil.

4
19 янв. cavab user1460965 19 yanvar tərəfindən verilir . 2018-01-19 13:50 '18 saat 13:50 'da 2018-01-19 13:50

Aşağıdakı əmri cəhd edin:

git branch -d $(git branch --merged | grep -vw $(git rev-parse --abbrev-ref HEAD))

git rev-parse istifadə edərək, onu istisna etmək üçün mövcud filialın adını alacaqsınız. Səhv etsəniz, yerli filiallar silinməyəcəkdir.

Uzaq filiallarla eyni şeyi etmək üçün ( origin uzaq adınıza dəyişin) cəhd edin:

git push origin -vd $(git branch -r --merged | grep -vw $(git rev-parse --abbrev-ref HEAD) | cut -d/ -f2)

Birdən çox uzaqdan varsa, grep origin | əlavə edin grep origin | yalnız origin filtreləmək üçün cut .

Yuxarıdakı əmr yerinə yetirilmirsə, əvvəlcə birləşdirilmiş uzaqdan izləmə filiallarının silinməsini cəhd edin:

git branch -rd $(git branch -r --merged | grep -vw $(git rev-parse --abbrev-ref HEAD))

Sonra git fetch yenidən git push -vd və yenidən əvvəlki git push -vd .

Tez-tez istifadə edirsinizsə, ~/.gitconfig faylına takma adları ~/.gitconfig edin.

Səhvən bir neçə filialı git reflog , itirildiyi əməlləri tapmaq üçün " git reflog istifadə edin.

4
17 дек. cavab cənab 17 dekabrda verilir . 2016-12-17 15:17 '16 saat 15:17 'da 2016-12-17 15:17

Bu cavabların bəzilərinə əsasən, mən də bunu öz başlama formasını hazırladım !

Birləşdirilmiş filialları aradan qaldırmaq üçün git branch --mergedgit branch --merged istifadə edir və git branch --merged əvvəl hər filialdan tələb olunur.

 merged_branches(){ local current_branch=$(git rev-parse --abbrev-ref HEAD) for branch in $(git branch --merged | cut -c3-) do echo "Branch $branch is already merged into $current_branch." echo "Would you like to delete it? [Y]es/[N]o " read REPLY if [[ $REPLY =~ ^[Yy] ]]; then git branch -d $branch fi done } 
4
15 окт. cavab verildi . 2013-10-15 20:13 '13 at 20:13 2013-10-15 20:13

Mən git-flow esque adlandırma sxemindən istifadə edirəm, buna görə mənim üçün çox təhlükəsizdir:

 git branch --merged | grep -e "^\s\+\(fix\|feature\)/" | xargs git branch -d 

Əsasən, fix/ və ya feature/ ilə başlayan birləşdirilmiş əmrlər axtarır.

4
23 авг. Cavab Chad M 23 aug verilir. 2016-08-23 04:15 '16 'da 4:15 ' də 2016-08-23 04:15 'də

İndi olduğunuz şöbəyə birləşdirilmiş olan bütün yerli şöbələri silmək istəyirsinizsə, mən əvvəllər bu cavablara əsaslanaraq bunun üçün təhlükəsiz bir əmr ilə çıxış etmişəm:

 git branch --merged | grep -v \* | grep -v '^\s*master$' | xargs -t -n 1 git branch -d 

Bu əmr mövcud filial və ya əsas şöbəyə təsir göstərməyəcəkdir. O, əvvəldən -t xargs bayrağı istifadə edərək nə etdiyini sizə xəbər verəcəkdir.

4
23 янв. Cavab 23 yanvarda chrismendis verilir 2014-01-23 19:24 '14 at 19:24 2014-01-23 19:24

Git master ilə birləşən bütün filialları yoxlayan bir skript yazın.

Sonra git checkout master çalıştırın.

Nəhayət, birləşən filialları silin.

 for k in $(git branch -ra --merged | egrep -v "(^\*|master)"); do branchnew=$(echo $k | sed -e "s/origin\///" | sed -e "s/remotes\///") echo branch-name: $branchnew git checkout $branchnew done git checkout master for k in $(git branch -ra --merged | egrep -v "(^\*|master)"); do branchnew=$(echo $k | sed -e "s/origin\///" | sed -e "s/remotes\///") echo branch-name: $branchnew git push origin --delete $branchnew done 
3
09 авг. Cavab 09 avqustda verilir . 2017-08-09 16:42 '17 at 4:42 pm 2017-08-09 16:42

Qərar çox yaxşıdır, amma bir problem var: hələ də uzaq birləşməmiş yerli filialları da aradan qaldırır.

Nəticəyə baxdığınız təqdirdə bir şey görürsən

 $ git branch --merged master -v api_doc 3a05427 [gone] Start of describing the Java API bla 52e080a Update wording. branch-1.0 32f1a72 [maven-release-plugin] prepare release 1.0.1 initial_proposal 6e59fb0 [gone] Original proposal, converted to AsciiDoc. issue_248 be2ba3c Skip unit-for-type checking. This needs more work. (#254) master be2ba3c Skip unit-for-type checking. This needs more work. (#254) 

Filiallar blaissue_248 yerli filiallardır, səssizcə silinəcəkdir.

Ancaq siz uzaqdan (artıq getdi) tıklandığın şöbələri göstərən və silinəcək olan filialları göstərən sözü də görmüş bilərsiniz.

Beləliklə, orijinal cavab dəyişə bilər (qısa bir string uzunluğu üçün çox satır bölün)

 git branch --merged master -v | \ grep "\\[gone\\]" | \ sed -e 's/^..//' -e 's/\S* .*//' | \ xargs git branch -d 

hələ birləşməmiş filialları qorumaq üçün. Həmçinin, sihirbazın qoruması üçün grepping tələb olunmur, çünki mənşəli bir konsol var və sol kimi görünmür.

2
15 июня '18 в 11:53 2018-06-15 11:53 Cavab Heiko Rupp tərəfindən 15 İyun '18' də 11:53 2018-06-15 11:53 'də verilir

2018.07-cü ilədək

Bunu ~/.gitconfig [alias] bölməsinə əlavə edin:

 sweep = !"f() { git branch --merged | egrep -v \"(^\\*|master|dev)\" || true | xargs git branch -d; }; f" 

Artıq lazımi təmizlənmə etmək üçün git sweep çağırırsınız.

1
01 июля '18 в 10:49 2018-07-01 10:49 Cavab verilir sorin 01 iyul '18 saat 10:49 'da 2018-07-01 10:49

Windows-da, Cygwin'i yükləyə və silinmiş bütün şöbələri aşağıdakı əmrdən istifadə edə bilərsiniz:

 git branch -r --merged | "C:\cygwin64\bin\grep.exe" -v master | "C:\cygwin64\bin\sed.exe" 's/origin\///' | "C:\cygwin64\bin\xargs.exe" -n 1 git push --delete origin 
1
09 сент. Seyed Morteza Musavi tərəfindən verilmiş cavab 09.09 2018-09-09 10:17 '18 saat 10:17 'da 2018-09-09 10:17

Sihirbazdan başqa bir şöbədən təsadüfən işləməməyin qarşısını almaq üçün aşağıdakı bash skriptini istifadə edirəm. Əks təqdirdə, buraxılış git branch --merged | grep -v "\*" | xargs -n 1 git branch -d git branch --merged | grep -v "\*" | xargs -n 1 git branch -d git branch --merged | grep -v "\*" | xargs -n 1 git branch -d əlil sihirbaz ilə birləşdirilmiş bir şöbədən, əsas şəffaflıq aradan qaldıra bilər.

 #!/bin/bash branch_name="$(git symbolic-ref HEAD 2>/dev/null)" || branch_name="(unnamed branch)" # detached HEAD branch_name=${branch_name##refs/heads/} if [[ $branch_name == 'master' ]]; then read -r -p "Are you sure? [y/N] " response if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]; then git branch --merged | grep -v "\*" | xargs -n 1 git branch -d fi else echo "Refusing to delete branches that are not merged into '$branch_name'. Checkout master first." fi 
1
20 янв. Robert Kaciçin 20 yanvarda verdiyi cavabı 2014-01-20 20:05 '14 saat 20:05 2014-01-20 20:05

Mənim töhfəmə bash skripka mmrobin cavab əsaslanır.

Onların əvəzinə yerli və ya uzaq filialların yoxlanılması / silinməsi üçün bəzi faydalı parametrlər daxil edilməlidir.

Deyək ki, yuxarı axın və köklü bir uzaq məsafədə olduğumu deyirəm (GitHub üslubu, mənim plug başlanğıcdır, yuxarı).

Hər hansı bir master, HEAD və ya yuxarıdan bir şey silmək istəmirəm. Mən də inkişaf şöbəsini silmək istəmirəm, çünki bu, PR yaratdığımız ümumi filialımızdır.

Birləşdirilmiş olanlar tərəfindən süzülmüş bütün uzaq filialları göstərin:

 git branch -r 

Silmək istəməyən filial adlarında bildiyim sözləri olan bu siyahıdan xətləri silin:

 sed '/develop\|master\|HEAD\|upstream/d' 

Silinmiş adı silmək adından silin (mənşə / bəzi şanslar birbaşa olur):

 sed 's/.*\///' 

Bir xətt interfeysinə zəng etmək üçün xargs istifadə edin:

 xargs git push --delete origin 

Hamısını birlikdə qoyun:

 git branch -r --merged | sed '/develop\|master\|HEAD\|upstream/d' | sed 's/.*\///' | xargs git push --delete origin 

Bu məni yalnız işləyən bəzi filiallarla tərk edəcək, amma birləşməyəcək. Sonra onları bir-bir silə bilərsiniz, çünki onların çoxu olmamalıdır.

Artıq lazım olmayan şöbələri tapın:

 git branch -ar 

Silmək istədiyiniz filial 1, filial 2 və filial 3 tapa bilərsiniz:

 git push --delete origin branch1 branch2 branch3 
0
02 июля '15 в 11:54 2015-07-02 11:54 cavab miqotu iyul ayının 02-də saat 11:54 'də verilir

HubFlow və ya GitFlow kimi bir dallaşdırma modelini istifadə edirsinizsə, bu funksiyanı birləşdirilmiş şöbələri aradan qaldırmaq üçün istifadə edə bilərsiniz:

git branch --merged | grep feature.* | grep -v "\*" | xargs -n 1 git branch -d

0
26 февр. Cavab 26 fevralda bedrin verilir . 2015-02-26 17:02 '15 at 17:02 2015-02-26 17:02
  • 1
  • 2

Tags haqqında digər suallar və ya bir sual