it-swarm-tr.com

Git şubesini yerel olarak ve uzaktan nasıl silerim?

Bir şubeyi hem yerel hem de uzaktan silmek istiyorum.

Uzak Şubeyi Silme Girişimi:

$ git branch -d remotes/Origin/bugfix
error: branch 'remotes/Origin/bugfix' not found.

$ git branch -d Origin/bugfix
error: branch 'Origin/bugfix' not found.

$ git branch -rd Origin/bugfix
Deleted remote branch Origin/bugfix (was 2a14ef7).

$ git Push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> Origin/bugfix
Already up-to-date.

remotes/Origin/bugfix dalını hem yerel olarak hem de uzaktan başarıyla silmek için ne yapmalıyım?

15136
Matthew Rankin

Yönetici Özeti

$ git Push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Çoğu durumda uzak adın Origin olduğunu unutmayın.

Yerel Şubeyi Sil

Yerel dalı silmek için aşağıdakilerden birini kullanın:

$ git branch -d branch_name
$ git branch -D branch_name

Not:-d seçeneği, --delete için bir takma addır, yalnızca dalı daha önce tam olarak birleştirildiyse dalı siler. Ayrıca, dalı silen -D __ 'in bir diğer adı olan --delete --force öğesini de kullanabilirsiniz. birleştirilmiş durumundan bağımsız olarak. "[Kaynak: man git-branch]

Uzak Şubeyi Sil [8 Eylül-2017-Güncellenme Tarihi]

Git v1.7.0 sürümünden, kullanarak uzakdalını silebilirsiniz.

$ git Push <remote_name> --delete <branch_name>

hatırlamak daha kolay olabilir

$ git Push <remote_name> :<branch_name>

- uzak bir dalı veya etiketi silmek için Git v1.5.0 "içine eklendi.

Başlangıcı Git v2.8.0git Push işlevini -d seçeneğinin diğer adı olarak da --delete seçeneğiyle birlikte kullanabilirsiniz.

Bu nedenle, yüklediğiniz Git sürümü daha kolay mı yoksa zor sözdizimi mi kullanmanız gerektiğini belirler.

Uzak Şubeyi Sil [Orijinal Cevap 5-Jan-2010]

Bölüm 3'ten Pro Git Scott Chacon tarafından:

Uzak Dalları Silme

Uzak bir şubeyle işiniz bittiğini varsayalım - siz ve ortak çalışanlarınız bir özellik ile işiniz bitti ve onu uzaktan kumandanızın ana şubesine (ya da kararlı kod satırınızın hangi şubesine bağlı olursa olsun) birleştirdiniz. Uzak bir dalı oldukça geniş sözdizimi git Push [remotename] :[branch] kullanarak silebilirsiniz. Sunucu düzeltme şubenizi sunucudan silmek istiyorsanız, aşağıdakileri çalıştırın:

$ git Push Origin :serverfix
To [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

Boom. Sunucunuzda artık şube yok. Bu sayfayı köpek kulağı ile almak isteyebilirsiniz, çünkü o komuta ihtiyacınız olacak ve sözdizimini unutabilirsiniz. Bu komutu hatırlamanın bir yolu, biraz daha önce denediğimiz git Push [remotename] [localbranch]:[remotebranch] sözdizimini hatırlamaktır. [localbranch] bölümünü bırakırsanız, temelde “Benim tarafımda hiçbir şey alma ve [remotebranch]” olmasını sağlayın.

git Push Origin :bugfix dosyasını verdim ve çok iyi çalıştı. Scott Chacon haklıydı - Ben köpek kulağı bu sayfayı (ya da Stack Overflow'a cevap vererek neredeyse köpek kulağı) isteyeceğim.

O zaman bunu diğer makinelerde de uygulamalısın

git fetch --all --Prune

değişiklikleri yaymak için.

18919
Matthew Rankin

Matthew’ün cevabı, remote dalı kaldırmak için harika ve ayrıca bu açıklama için teşekkür ediyorum, ancak iki komut arasında basit bir ayrım yapmak için:

Makinenizden biryerel dalöğesini kaldırmak için:

git branch -d {the_local_branch} (birleştirilmiş durumu kontrol etmeden şubeyi silmeyi zorlamak yerine -D kullanın)

Sunucudan biruzak dalöğesini kaldırmak için:

git Push Origin --delete {the_remote_branch}

Referans: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

3016
Eric Brotto

Kısa cevaplar

Aşağıdaki komutların daha ayrıntılı açıklamalarını istiyorsanız, bir sonraki bölümdeki uzun cevaplara bakın.

Uzak bir dalı silmek:

git Push Origin --delete <branch>  # Git version 1.7.0 or newer
git Push Origin :<branch>          # Git versions older than 1.7.0

Yerel bir şubeyi silmek:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

Yerel bir uzaktan izleme şubesini silmek:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --Prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

Uzun Cevap: Silinecek 3 farklı dal var!

Şubeleri hem yerel hem de uzaktan silmeyle uğraşırken, 3 farklı dalın olduğunu unutmayın :

  1. Yerel şube X.
  2. Uzak Kaynak dalı X.
  3. Uzak dalı takip eden yerel uzaktan izleme dalı Origin/XX.

Visualization of 3 branches

Kullanılan orijinal poster

git branch -rd Origin/bugfix

bu yalnızca yerel uzaktan izleme şubesini silmiş Origin/bugfix, ve bugfix'daki Origin gerçek uzak dalı değil.

Diagram 2

O gerçek uzak şubeyi silmek için ,

git Push Origin --delete bugfix

Diagram 3

Ek detaylar

Aşağıdaki bölümlerde, uzak ve uzak izleme şubelerinizi silerken göz önünde bulundurmanız gereken ek detaylar açıklanmaktadır.

Uzaktaki dalları silmeye basmak, uzaktan izleme alanlarını da siler

Uzak dal X komutunun bir git Push kullanarak komut satırından silinmesinin yerel uzak izleme dalını da sileceğini unutmayın Origin/X, bu nedenle eski uzaktan izleme dalını git fetch --Prune veya git fetch -p ile budamak gerekmez Yine de yaparsan canın yanmaz.

Uzaktan izleme dalı Origin/X öğesinin ayrıca aşağıdakileri çalıştırarak da silindiğini doğrulayabilirsiniz:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

Eski yerel uzaktan izleme şubesinin budaması Orijinal/X

Uzak dalı X komutunuzu komut satırından (yukarıdaki gibi) silmediyseniz, yerel repo hala (şimdi kullanılmayan) bir uzaktan izleme dalı Origin/X içerecektir. Örneğin, uzak bir şubeyi doğrudan GitHub'ın web arayüzü üzerinden sildiyseniz bu olabilir.

Bu eski uzaktan izleme dallarını kaldırmanın tipik bir yolu (Git sürüm 1.6.6'dan beri) git fetch __ --Prune veya daha kısa -p ile çalıştırmaktır. Bunun, uzaktan kumandada artık bulunmayan tüm uzak dallar için kullanılmayan tüm yerel uzaktan izleme dallarını kaldırdığını unutmayın :

git fetch Origin --Prune
git fetch Origin -p # Shorter

İşte 1.6.6 sürüm notlarından ilgili teklif:

"git fetch", birçok havuzdan alma işlemini çalıştırmak için --all ve --multipleoptions; ve bayat gösteren uzaktan izleme dallarını kaldırmak için--Prune seçeneği. Bunlar "git uzaktan güncelleme" ve "git uzaktan Prune" ı daha az gerekli kılar ("uzaktan güncelleme" yi veya "uzak Prune" u kaldırmanın bir planı yoktur).

Eski uzaktan izleme dalları için yukarıdaki otomatik budama alternatifi

Alternatif olarak, eski yerel uzaktan izleme şubelerinizi git fetch -p aracılığıyla budamak yerine _ ek ağ işlemi yapmaktan kaçınabilirsinizyalnızca --remote veya -r bayraklarıyla dalları elle kaldırarak:

git branch --delete --remotes Origin/X
git branch -dr Origin/X # Shorter

Ayrıca bakınız

1743
user456814

Bir dalı silmek için gereken adımlar:

uzak dalı silmek için:

git Push Origin --delete <your_branch> 

local şubeyi silmek için , üç yol var :

1: git branch -D <branch_name> 

2: git branch --delete --force <branch_name>  //same as -D

3: git branch --delete  <branch_name>         //error on unmerge

Açıkla: Tamam, burada neler olduğunu açıkla!

Basitçe git Push Origin --delete to sadece uzaktaki dalınızı silin , sondaki dalın adını ekleyin ve bu silinecek ve aynı anda uzaktan kumandaya itecektir ...

Ayrıca, yerel şubeyi silen git branch -D,ONLY! ...

-D, birleştirilmiş olmasa bile dalı silecek olan --delete --force anlamına gelir (zorla silme), ancak dal birleştirme durumuna ilişkin bir hata atan -d anlamına gelen --delete işlevini de kullanabilirsiniz.

Adımları göstermek için aşağıdaki resmi de oluşturuyorum:

 delete a remote and local branch in git

1234
Alireza

Uzak dalı silmek için aşağıdakileri de kullanabilirsiniz.

git Push --delete Origin serverfix

Aynı şeyi yapan

git Push Origin :serverfix

ama hatırlaması daha kolay olabilir.

746
pagetribe

Bir dalı silmek isterseniz, önce silinecek daldan başka bir şubeye ödeme yapın.

git checkout other_than_branch_to_be_deleted

Yerel şubeyi silmek:

git branch -D branch_to_be_deleted

Uzak şubeyi silmek:

git Push Origin --delete branch_to_be_deleted
357

İpucu: kullanarak şubeleri sildiğinizde

git branch -d <branchname> # deletes local branch

veya

git Push Origin :<branchname> # deletes remote branch

sadece referanslar silinir. Şube uzaktan kumandadan kaldırılsa bile, referanslar hala ekip üyelerinin yerel depolarında bulunmaktadır. Bu, diğer ekip üyeleri için silinen dalların git branch -a yaptıklarında görünmeye devam ettiği anlamına gelir.

Bunu çözmek için ekip üyeleriniz silinen şubeleri budayabilir

git remote Prune <repository>

Bu genellikle git remote Prune Origin olur.

352
pfrenssen
git branch -D <name-of-branch>
git branch -D -r Origin/<name-of-branch>
git Push Origin :<name-of-branch>
256
Felipe

Bu basittir: Sadece aşağıdaki komutu çalıştırın:

Git şubesini hem yerel hem de uzaktan silmek için, önce aşağıdaki komutu kullanarak yerel şubeyi silin:

git branch -d example

(burada example şube adıdır)

Ve bundan sonra uzak dal komutunu kullanarak silin:

git Push Origin :example
220
Syeful Islam

Başka bir yaklaşım: -

git Push --Prune Origin

UYARI: Bu yerel olarak bulunmayan tüm uzak dalları siler. Veya daha kapsamlı

git Push --mirror

etkili bir şekilde uzak havuzun, havuzun yerel kopyası gibi görünmesini sağlar (yerel başlıklar, uzaktan kumandalar ve etiketler uzaktan kumandada yansıtılır).

191
imanuelcostigan

Aşağıdakileri Bash settings'de kullanıyorum:

alias git-shoot="git Push Origin --delete"

Sonra arayabilirsin:

git-shoot branchname
160
crizCraig

Ocak 2013’ten bu yana GitHub Delete branch Şubeler sayfanızdaki her şubenin yanındaki buton.

İlgili blog yazısı: Şube oluştur ve sil

128
Nacho Coloma

Her iki adımı da tek bir komutla tamamlamak istiyorsanız, aşağıdakini ~/.gitconfig'nuza ekleyerek takma ad oluşturabilirsiniz:

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f"

Alternatif olarak, bunu kullanarak komut satırından global config'inize ekleyebilirsiniz.

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f'

NOTU: -d (küçük harf d) kullanıyorsanız, dal sadece birleştirilmişse silinir. Silme işlemini zorlamak için, -D (büyük harf D) kullanmanız gerekir.

119
Ryan Kohn

Yerel olarak sil:

Yerel bir şubeyi silmek için şunları kullanabilirsiniz:

git branch -d <branch_name> 

Bir dalı zorla silmek için, -D yerine -d kullanın.

git branch -D <branch_name>

Uzaktan sil:

İki seçenek var:

git Push Origin :branchname  

git Push Origin --delete branchname 

Daha sezgisel olduğu gibi 2. yolu kullanmanızı öneririm.

118
Rahul Gupta

Şubenizi yerel olarak ve uzaktan silmek için

  • Ana şubeye ödeme - git checkout master

  • Uzak şubenizi silin - git Push Origin --delete <branch-name>

  • Yerel şubenizi silin - git branch --delete <branch-name>

111
mfathy00

Bunu git remote Prune Origin kullanarak da yapabilirsiniz.

$ git remote Prune Origin
Pruning Origin
URL: [email protected]/yourrepo.git
 * [pruned] Origin/some-branchs

Uzaktan izleme şubelerini bir git branch -r listesinden eritir ve siler.

106
nickleefly

Diğer cevaplara ek olarak, genellikle git_remote_branch aracını kullanırım. Ekstra bir yüklemedir, ancak uzak dallarla etkileşime geçmenin kolay bir yoludur. Bu durumda silmek için:

grb delete branch

Ayrıca, publish ve track komutlarını da oldukça sık kullandığımı anlıyorum.

102
u2622

Bir liner command delete hem yerel hem de uzak :

D=branch-name; git branch -D $D; git Push Origin :$D

veya aşağıdaki takma adı ~/.gitconfig ; kullanım: git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git Push Origin --delete \"$1\"; };f"
92
Vinnie James

Şubeleri Silme

Diyelim ki şubemizdeki çalışma "iletişim formu" yapıldığını ve onu zaten "usta" ile birleştirdik. Artık ihtiyacımız olmadığından, silebiliriz (yerel olarak):

$ git branch -d contact-form

Ve uzak şubeyi silmek için:

git Push Origin --delete contact-form
90
Ulysses Alves

Uzak dalı sil

git Push Origin :<branchname>

Yerel şubeyi sil

git branch -D <branchname>

Yerel şube adımlarını silin:

  1. başka bir şubeye ödeme
  2. yerel şubeyi sil
86
jayxhj

Basitçe söyle:

git branch -d <branch-name>
git Push Origin :<branch-name>
85
piyushmandovra

Şimdi GitHub Desktop app ile yapabilirsiniz.

Uygulamayı başlattıktan sonra

  1. Şubeyi içeren projeye tıklayın
  2. Silmek istediğiniz şubeye geçin  switching branch
  3. Şubenin GitHub sunucularından silinmesini sağlamak için "Şube" menüsünden "Yayından kaldır ..." ı seçin.  unpublish branch
  4. Şubenin yerel makinenizden silinmesini sağlamak için "Şube" menüsünden "Sil" branch_name "... 'seçeneğini seçin (- üzerinde çalıştığınız makine)  delete local branch
79
Eric
git Push Origin --delete <branch Name>

hatırlamak daha kolay

git Push Origin :branchName
78
Smila

Yerel olarak silmek için - (Normal),

git branch -d my_branch

Şubeniz yeniden birleştirme/birleştirme işleminde ilerliyorsa ve bu doğru şekilde gerçekleştirilmediyse, Rebase/Merge in progress hatası alırsınız; bu durumda şubenizi silemezsiniz.

Yani yeniden birleştirme/birleştirme işlemini çözme gereksiniminiz yoksa aksi takdirde Sil'i kullanarak zorlayabilirsiniz.

git branch -D my_branch

Uzakta silmek için:

git Push --delete Origin my_branch

, kullanarak aynı şeyi yapabilir

git Push Origin :my_branch   # easy to remember both will do the same.

Grafiksel Gösterimi,

 enter image description here

73
Silent Spectator

Uzaktan kumandadaki dalla aynı adı taşıyan bir etiketiniz varsa bu işe yaramaz:

$ git Push Origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to Push some refs to '[email protected]:SomeName/some-repo.git'

Bu durumda etiketi silmek yerine dalı silmek istediğinizi belirtmeniz gerekir:

git Push Origin :refs/heads/branch-or-tag-name

Benzer şekilde, şube yerine etiketi silmek için kullanacağınız:

git Push Origin :refs/tags/branch-or-tag-name
64
Amiramix

Diğer cevapların çoğu hatalara/uyarılara yol açacaktır. Bu yaklaşım oldukça aptaldır, ancak örneğin git branch -D branch_to_delete ile tam olarak birleştirilmemişse some_other_branch dosyasına ihtiyacınız olabilir.

git checkout some_other_branch
git Push Origin :branch_to_delete
git branch -d branch_to_delete

Uzak dalı sildiyseniz, uzaktan budamaya gerek yoktur. Yalnızca, izlemekte olduğunuz bir depoda en güncel uzaktan kumandaları almak için kullanılır. Gözlemedim git fetch, uzaktan kumanda ekleyecek, kaldırmayacak. İşte git remote Prune Origin gerçekte bir şey yapacağında bir örnek:

A kullanıcısı yukarıdaki adımları uygular. B kullanıcısı en uzaktaki uzak şubeleri görmek için aşağıdaki komutları kullanır

git fetch
git remote Prune Origin
git branch -r
50
Brandon Cook

Bu cevap için googling bıktım, bu yüzden crizCraig'in verdiği cevaba daha önce de benzer bir yaklaşım izledim.

Bash profilime aşağıdakiler eklendi:

function gitdelete(){
    git Push Origin --delete $1
    git branch -D $1
}

Sonra her dalda işim bittiğinde (örneğin master ile birleştirilir) aşağıdakileri terminalimde çalıştırırım:

gitdelete my-branch-name

... bu durumda my-branch-name, Origin öğesinden ve yerel olarak siler.

49
arthurakay

Yürütmeden önce

git branch --delete <branch>

ilk önce uzak dalın EXACT adının ne olduğuna karar verdiğinizden emin olun:

git ls-remote

Bu size <branch> değeri için EXACTLY değerini girmeniz gerektiğini söyleyecektir. (branch büyük/küçük harfe duyarlıdır!)

45
joey
git Push Origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

Silmek istediğinize eminseniz, çalıştırın

git branch -D bugfix

Şimdi silinen uzak şubeleri temizlemek için çalıştır

git remote Prune Origin
44
Vivek

Diğer tüm cevapların karıştırılması. OS X'te Ruby 1.9.3+, test edilmiştir yalnızca gerektirir.

Bu dosyayı git-remove olarak adlandırın, çalıştırılabilir hale getirin ve yolunuza koyun. Ardından, örneğin, git remove temp.

#!/usr/bin/env Ruby
require 'io/console'

if __FILE__ == $0
      branch_name = ARGV[0] if (ARGV[0])
      print "Press Y to force delete local and remote branch #{branch_name}..."
    response = STDIN.getch
    if ['Y', 'y', 'yes'].include?(response)
      puts "\nContinuing."
      `git branch -D #{branch_name}`
      `git branch -D -r Origin/#{branch_name}`
      `git Push Origin --delete #{branch_name}` 
    else
      puts "\nQuitting."
    end
end
43
Dan Rosenstark

Aşağıdaki takma adları .gitconfig dosyama ekledim. Bu, şube adını belirtmeden veya belirtmeden dalları silmeme izin verir. Herhangi bir argüman iletilmezse, şube adı geçerli şubeye varsayılan olarak ayarlanır.

[alias]
    branch-name = rev-parse --abbrev-ref HEAD     

    rm-remote-branch = !"f() { branch=${1-$(git branch-name)}; git Push Origin :$branch; }; f"
    rm-local-branch = !"f() { branch=${1-$(git branch-name)}; git checkout master; git branch -d $branch; }; f"
    rm-branch-fully = !"f() { branch=${1-$(git branch-name)}; git rm-local-branch $branch; git rm-remote-branch $branch; }; f"
39
Jared Knipp

Uzak dalları silmek için komut satırına alternatif bir seçenek GitHub dalları sayfası.

Örneğin bakınız: https://github.com/angular/angular.js/branches

GitHub deposunun Code -> Branches sayfasında bulundu.

Genelde komut satırını kendim tercih ederim ama bu GitHub sayfası size daha fazla bilgi gösterir şubeler hakkında - son güncelleme tarihi ve kullanıcı ve - ileri ve arkadaki taahhüt sayısı Çok sayıda şubeyle uğraşırken kullanışlıdır.

31
Bradley Flood

Ben de aynı sorunları yaşadım ve bu işe yarıyor: git branch -d the_local_branch

Bu uzak dalı kaldırır git Push Origin :the_remote_branch

Kaynak: Makandra Kartları

30
Srijan Karki

İyi bir cevap var, ancak tonlarca şubeniz varsa, bunları yerel olarak ve uzaktan tek tek silmek sıkıcı bir iş olacaktır. Bu görevleri otomatikleştirmek için bu betiği kullanabilirsiniz.

branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")


for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do

    # delete prefix remotes/Origin/ from branch name
    branch_name="$(awk '{gsub("remotes/Origin/", "");print}' <<< $branch)"

    if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
        # delete branch remotly and locally
        git Push Origin :$branch_name
    fi
done 
  • Silmek istemediğiniz dalları listeleyin
  • Uzaktan kumanda şubesini tekrar okur ve eğer "koruma listemizde" değilse, silindik.

Kaynak: çıkarmadan-git-dalları-bir kerede

28
levi

GitBash kullanarak aşağıdakileri yapabilirsiniz:

git branch --delete <branch>

OR

GitHub masaüstü uygulamasından, şubenizi teslim aldığınızda, Local dalını Şube menü şeridi ile silebilirsiniz:

 enter image description here

GitHub masaüstü uygulamasını kullanıyorsanız ARE NOT kullanıyorsanız ve yerel kaynak kontrolünüz için Visual Studio gibi bir IDE kullanıyorsanız, tek yapmanız gereken birkaç hızlı adım:

  1. Silmek istediğiniz dışındaki bir şubeye göz atın.
  2. Silmek istediğiniz dalı sağ tıklayın.
  3. Bağlam menüsünden Sil seçeneğini seçin.

Ardından, GitHub hesabınıza çevrimiçi olarak giriş yaptıktan sonra depoya gidin veTüm Dallarsekmesine tıklayın. Oradan silmek istediğiniz grubun sağındaki küçük çöp kutusu simgesini tıklamanız yeterlidir.

 enter image description here

* Aklınızda bulundurun - şube yayınlanmadıysa, çevrimiçi havuzunuzdan silmeyi denemenize gerek yoktur.

23
Uchiha Itachi

.Bash_aliases dosyamda aşağıdaki kullanışlı işlevi oluşturdum:

git-delete-branch() 
{ 
    if [[ -n $1 ]]; then
        git checkout master > /dev/null;
        branch_name="$1";
        echo "Deleting local $branch_name branch...";
        git branch -D "$branch_name";
        echo "Deleting remote $branch_name branch...";
        git Push Origin --delete "$branch_name";
        git remote Prune Origin;
        echo "Your current branches are:";
        git branch -a;
    else
        echo "Usage: git-delete-branch <branch_name>";
    fi
}
19

Terminal kullanarak en son belgeye göre aşağıdaki yolu silebiliriz.

yerel olarak sil:

git branch -D usermanagement

uzaktaki bir yerde sil:

git Push --delete Origin usermanagement
19
KARTHIKEYAN.A

Çok basit

Uzak şubeyi silmek için

git Push -d Origin <branch-name>

OR

git Push Origin :<branch-name>

Yerel şubeyi silmek için

git branch -D <branch-name>
15
Vivek Maru