2011-12-23 26 views
88

Yani Git + GitHub kullanarak başlıyorum.Git Şubesi nasıl kapatılır?

Küçük dağıtılan ekibimizde, her üye, tahsis edilen her bir konu/gereksinim için kendi şubesini yaratıyor.

  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 ...

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

ve FINALLY ... istek kabul edilir.

Woot.

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

Şubeyi yerel dev makinesinde yaratan kişi, dalı kapatmak zorunda mıdır? Dev bir kişinin şubeyi silmesi (... -D ...) için bir öneri yapıldı ve daha sonra master'ın bir çekme/yenilemesi yapıldı.

Hmmmmm ... Emin - yardım lütfen :)

+14

Git'teki bir dal, yalnızca belirli bir işlemin üzerindeki bir etikettir - bu nedenle, artık ihtiyacınız yoksa, yalnızca "bu" etiketini (söz konusu "etiket") silmeniz yeterlidir. Yerel olarak, sadece bir 'git şube Sorunu # 1 -d 'yapın ve hepsi var - kod yok, sadece bir etiket deponuzdan kaldırıldı –

+1

@marc_s Sadece bir yanıt vermenizi öneririz :) – KingCrunch

+0

@marc_s - diyorsun ki, standart uyguladıktan sonra, şubeni doldurdu ve şube itildi .. onu silelim mi? Birleşmeye ne dersin? –

cevap

152

silmek için şube birleştirme. Çoğu zaman durum budur. Bir dalın gerekli olduğu zamanlar vardır (ör., Değişiklikleri başka bir dağıtım dalına kopyalama).

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> 

Bir dal çalışmaları içindir:

Parmaklarım bizim süreci belleğe sahip. Bir etiket zamanında bir yeri işaretler. Her dal birleştirme işlemini etiketleyerek, gerekirse bir dalı yeniden diriltebiliriz. Şube etiketleri değişikliklerin gözden geçirilmesi için birkaç kez kullanılmıştır.

+7

Prosedürümüzde son zamanlarda bir değişiklik yaptık. 'Git push --tags' işlevini kullanmak ağır işlenir ve tüm etiketleri indirir. Bu, kendi yerel etiketlerine sahip olmanızı zorlaştırır. Bunun yerine, sadece bir etiketi itmek için 'itme başlangıç ​​orijini dalını - <özellik-dalını> kullanacağız. –

+0

Son satırda, daha önce "özellik-dal>> yerine" şube - <özellik-dal>> "olarak ayarladığımız özellik dalının etiket adını kullanmayı hatırlamanız gerekir. Doğru? –

+0

@PremierBromanov son satır uzak şube siler içindir. Hatırlamak için @BillDoor 'git push --tags' etiketini kullandı. – Deivide

37

Evet, sadece git push origin :branchname çalıştırarak dalı silin. Daha sonra yeni bir sorunu düzeltmek için, master'dan tekrar ayrılın.

+3

Yerel şubeyi değil, uzak şubeyi silecektir. – KingCrunch

+3

Bunun neden -2'de modifiye edildiğini bilmiyorum, bu doğru cevap. Kesinlikle bir uzak şubeye sahipler, buna karşı bir PR nasıl başlatabilirlerdi? –

+1

@PaulBetts Katılıyorum. Ben de oy verdim. – gilligan

34

tam sonra kod ilk silinmeden dalı istiyorum sonra usta Biz geliştirici çekme isteği devlete soran istemek bu kolu

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

ve bu benim kendi dev makinemde değil mi? yeni kodu kabul eden ana kişi .. makine başka bir yerde. –

+2

Başka biri birleştirme işlemini yapıyorsa, şube işaretçinizi genellikle ayrı bir uzaktan kumandada, örn. gönderici/dal-ad. Bunu yaptıktan sonra kurtulmak için git uzak kuru üzüm göndericisini kullanması gerekecek - çoğu durumda, umrunda değil. –

+1

* Ana ağacın içine entegre edilmekten sorumlu olan siz değilseniz, asla kendi dalınızı birleştirmemelisiniz. Bir başkasının bunu entegre etmesini istemediyseniz, ana şubenizi yeni uzak hesaplarla güncelleyin - çekilmesini istediğiniz her şeyi içermelidir - sonra da şubenizi silin. Bu, diğer adam bir şeyleri değiştirdiğinde sorun yaşamanızı sağlar. – ThiefMaster

İlgili konular