Git Şubesi nasıl kapatılır?


112

bu yüzden Git + GitHub kullanmaya başlıyorum.

Küçük dağıtılmış ekibimizde her üye tahsis edildikleri her konu / gereksinim için kendi şubesini oluşturuyor.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

Şimdi code code, commit, code, commit, vb ...

Daha sonra pull request, code-fixup, commit, code, commit.. vb

ve SONUNDA ... çekme talebi kabul edilir.

Woot.

ama .. şimdi ne olacak? (......garip......)

Şubeyi yerel geliştirme makinesinde oluşturan kişinin şubeyi kapatması gerekiyor mu? Geliştiricinin şubeyi silmesi (... -D ...) ve ardından master'ı çekmesi / yenilemesi yapması için bir öneri vardı .. ve daha sonra tüm şube kodunu alacak.

Hmmmmm ... emin değilim - lütfen yardım edin :)


16
Git'teki bir dal, belirli bir işlemedeki bir etikettir - yani temelde, artık ona ihtiyacınız yoksa - sadece o "dalı" (bu kaydetmedeki "etiket") silin. Yerel olarak, sadece bir yapın git branch Issue#1 -dve hepsi bu kadar - hiçbir kod kaybolmaz, sadece
deponuzdan

1
@marc_s Bundan bir cevap vermenizi öneririm :)
KingCrunch

Yani @marc_s - şubenizi bitirdikten sonra standart uygulama olduğunu söylüyorsunuz .. ve şube itilmişse .. onu silelim mi? Birleştirme ne olacak?
Pure.Krome

@ Pure.Krome En azından, "çekme isteği kabul edildi" derken, zaten birleştirilmiş olduğunu kastettiğinizi varsaydım. Evet, tabii ki, içine değişiklikleri entegre master, developveya her türlü geliştirme şube (kabak olmadan / ile Birleştirme, Rebase (), ...) olarak adlandırılır
KingCrunch

'Çekme talebi kabul edildi' dediğimde .. bu başka bir yerde oluyor. (yani, PR'd olan tüm kodu onaylayan sorumlu geliştirici ...). Yerel dev makinemde ustalaşıp birleştirme yapmam gerektiğini merak ediyordum.
Pure.Krome

Yanıtlar:


181

Çekme talebini isteyen geliştiricinin şubenin silinmesini istediğini belirtmesini rica ediyoruz. Çoğu zaman durum budur. Bir dalın gerekli olduğu zamanlar vardır (örneğin, değişiklikleri başka bir yayın dalına kopyalamak).

Parmaklarım sürecimizi ezberledi:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

Şube iş içindir. Etiket, zamandaki bir yeri işaretler. Her dal birleştirmeyi etiketleyerek, gerekirse bir dalı yeniden canlandırabiliriz. Şube etiketleri, değişiklikleri gözden geçirmek için birkaç kez kullanılmıştır.


8
Prosedürümüzde yakın zamanda bir değişiklik yaptık. Kullanımı git push --tagsağırdır ve tüm etiketleri indirir. Bu, kendi yerel etiketlerinizin olmasını zorlaştırır. Bunun yerine git push origin branch-<feature-branch>sadece bir etiketi itmek için kullanırız .
Bill Door

Bu nedenle, son satırda, daha önce <özellik-dal> yerine "dal- <özellik-dal>" olarak ayarladığımız özellik dalı için etiket adını kullanmayı hatırlamanız gerekir. Doğru?
Premier Bromanov

@PremierBromanov son satır uzak şubeyi silmek içindir. @ BillDoor'un kullandığı etiketini hatırlamak için git push --tags.
28'de Deivide

Mükemmel komut dosyası !!
Kike Gamboa

41

Evet, şubeyi çalıştırarak silin git push origin :branchname. Daha sonra yeni bir sorunu düzeltmek için ana bilgisayardan tekrar ayrılın.


3
Bu, yerel olanı değil, uzak dalı siler.
KingCrunch

5
Bunun neden -2 olarak modlandığını bilmiyorum, bu doğru cevap. Kesinlikle uzak bir şubeleri var, buna karşı başka nasıl PR düzenleyebilirler?
Ana Betts

Bunu yaparsanız ve sonra git çekme yaparsanız, yerel şubenizi de silmez mi? (Düzenleme: nm, git remote prune çalıştırmadığınız sürece açıkça olmadığını görüyorum.)
Tim Keating

1
Şube geçmişine ne olur?
geoidesic

40

kodu tamamladıktan sonra önce dalı ana ile birleştirin, ardından o dalı silin

git checkout master
git merge <branch-name>
git branch -d <branch-name>

ve bu benim kendi geliştirici makinemde, değil mi? yeni bir kodu kabul eden asıl kişi .. onun makinesi başka bir yerde.
Pure.Krome

2
Birleştirme işlemini başka biri yapıyorsa, şube işaretçinizi genellikle ayrı bir uzaktan kumandada tutar, örneğin gönderen / şube adı. git remote prune senderSiz yaptıktan sonra da ondan kurtulmak için kullanması gerekecek - ancak çoğu durumda umursaması gerekmez.
jørgensen

1
Sen ana ağaca entegre edilmesinden sorumludur biri olmadıkça kendi şube birleştirme asla. Değilseniz ve başka birinden onu entegre etmesini istediyseniz, ana şubenizi yeni uzaktan taahhütlerle güncelleyin - çekilmesini istediğiniz her şeyi içermelidir - ve ardından şubenizi silin. Bu, diğer adam bir şeyleri değiştirirse herhangi bir sorun yaşamamanızı sağlar.
ThiefMaster
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.