Bir şubeyi hem yerel hem de uzaktan silmek istiyorum.
$ 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?
$ git Push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>
Çoğu durumda uzak adın Origin
olduğunu unutmayın.
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
]
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.
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.
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
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
Şubeleri hem yerel hem de uzaktan silmeyle uğraşırken, 3 farklı dalın olduğunu unutmayın :
X
.X
.Origin/X
X
.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.
O gerçek uzak şubeyi silmek için ,
git Push Origin --delete bugfix
Aşağıdaki bölümlerde, uzak ve uzak izleme şubelerinizi silerken göz önünde bulundurmanız gereken ek detaylar açıklanmaktadır.
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
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--multiple
options; 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).
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
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:
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.
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
İ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.
git branch -D <name-of-branch>
git branch -D -r Origin/<name-of-branch>
git Push Origin :<name-of-branch>
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
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).
Aşağıdakileri Bash settings'de kullanıyorum:
alias git-shoot="git Push Origin --delete"
Sonra arayabilirsin:
git-shoot branchname
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
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.
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.
Ş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>
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.
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.
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"
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
Uzak dalı sil
git Push Origin :<branchname>
Yerel şubeyi sil
git branch -D <branchname>
Yerel şube adımlarını silin:
Basitçe söyle:
git branch -d <branch-name>
git Push Origin :<branch-name>
Şimdi GitHub Desktop app ile yapabilirsiniz.
Uygulamayı başlattıktan sonra
git Push Origin --delete <branch Name>
hatırlamak daha kolay
git Push Origin :branchName
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,
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
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
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.
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!)
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
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
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"
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.
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
İ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
GitBash kullanarak aşağıdakileri yapabilirsiniz:
git branch --delete <branch>
GitHub masaüstü uygulamasından, şubenizi teslim aldığınızda, Local dalını Şube menü şeridi ile silebilirsiniz:
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:
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.
* Aklınızda bulundurun - şube yayınlanmadıysa, çevrimiçi havuzunuzdan silmeyi denemenize gerek yoktur.
.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
}
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
Ç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>