2012-01-20 14 views
5

Gitmek için yeni ve çok basit bir senaryonun nasıl ele alınacağını bilmek istiyorum. Git hakkında stackoverflow üzerinde çok fazla yazı okuyorum ama yine de cevabı çözemiyorum.Dev/daktamdaki ana/master kaydını nasıl tutacağım?

Herkesin üzerinde çalıştığı bir kök/ana uzak dalına sahibiz. Uygulamak istediğim bir özellik var ve geliştirmek için zaman alabilir. Bu arada, insanlar kodun kökenini/uzmanını kontrol ediyor olabilirler.

Ne olur benim iş akışı gibi bakmak ve nasıl aşağıdaki ihtiyaçları göz önüne alındığında, benim git şube kurma hakkında gitmeli: Ben dalına kod değişiklikleri işlemek ve bunları itmek isterler

  1. sunucumuzdaki uzak bir şubeye, bilgisayarımın kızarması durumunda değişiklikleri kaybetmem.

  2. Ben güncel ana dalı ile benim şube tutmak istiyorum.

  3. Düzenli birleşmeleri en aza indirmek istiyorum. Git rebase kavramını seviyorum, bu yüzden kullanımını ve dolayısıyla hızlı ileriye doğru birleştirmeleri en üst düzeye çıkarmak istiyorum.

  4. Bir noktada şubemizi FeatureA'yı kaynağa/ana kaynağa birleştirmek zorunda kalacağız.

Özetleme:

nasıl kurulum kökenli/ustadan çeker ama kökeni/MY-ŞUBESİ iter bir dal mı?

İş akışım nasıl görünürdü?

GÜNCELLEME:

teşekkür ederiz @ will-pragnell! Çözümünüz ve aşağıdakiler arasındaki fark nedir?

github üzerinde Bu sayfa önermek: geliştirme gövdesinden son güncellemeleri almak için

https://github.com/diaspora/diaspora/wiki/Git-Workflow

girerek uzaktan kumanda olarak ana GitHub repo kurmak için bir kerelik kurulum yapın:

$ git remote add upstream git://github.com/diaspora/diaspora.git 
$ git fetch upstream 
$ git checkout master 
$ git rebase upstream/master 
$ git checkout 100-retweet-bugfix 

[tüm dalında gerekli kararlıdır emin olun]

$ git rebase master 

cevap

5

Muhtemelen ustadan gelen ve kendi dalınıza iter bir dal istemezsiniz. İstediğiniz şey, ana master'ınızdan yerel yöneticinize çekmek, yerel olarak geri tepme işlemlerini yapmak ve daha sonra bu özellik için kendi uzak dalınıza basmaktır. Bu oldukça standart bir iş akışıdır ve size tam kontrol ve minimum düzeyde birleşme sağlar.Şahsen ben böyle yapacağını:

yeni il teşkilatının yeni uzaktan şubesine (Bu adım hakkında bilgiye ihtiyaç varsa this stackoverflow question bakınız) o

git checkout -b myFeature 

itin

git push origin myFeature 

oluştur Artık master şubesini karıştırmadan ihtiyaç duyduğunuzda yukarıdaki komutu kullanarak iterek myFeature dalında hapishanede çalışabilirsiniz. Başkalarının yöneticisinde yapmış kaydedilmesini yakalayabilmeleri gerektiğinde, böyle yapabilirsiniz: Özelliğinizin bittiğinde

git checkout master 
git pull (this will just fast-forward if you don't make any local changes to master) 
git checkout myFeature 
git rebase master 

, birleştirme ya da böylece usta içinde geri şube rebase herkes başka yeni özellik alır. Şunun gibi:

git checkout master 
git merge myFeature 
git push origin master 
+0

Teşekkür ederiz @ will-Pragnell! Sorum şu şekilde güncellendi: ur çözümüyle aşağıdakiler arasındaki fark nedir? github üzerinde Bu sayfa önermek: geliştirme gövdesinden son güncellemeleri almak için ana GitHub repo kurmak için bir kerelik kurulum yapmak https://github.com/diaspora/diaspora/wiki/Git-Workflow girerek bir uzaktan kumanda olarak: yukarı, $ git ödeme ana, $ git memba/ustası $ git checkout rebase getir //github.com/diaspora/diaspora.git, $ budala: $ git uzak memba budala eklemek 100 retweet-bugfix, [tüm dalında gerekli kararlıdır emin olun], $ git yaptıktan sonra usta – ben39

+0

rebase: 'git ödeme ana git birleştirme Özelliğim budala itme kaynağı ana ' 'aldım! [reddedildi] çoklu gönderenler -> çoklu-gönderenler (hızlı ileri sarma) hata: bazı refs 'ssh: // xxx' için başarısız başarısız Geçmişi kaybetmemek için, hızlı olmayan güncelleştirmeler reddedildi Tekrar basmadan önce uzaktan değişiklikleri (örneğin 'git pull') birleştirin. 'İleri itme - yardım' ile ilgili 'Ayrıntılar' bölümüne bakın. ' – ben39

+0

İkinci yorumunuzla ilgili olarak - birleştirmeyi denemeden önce ustaya tekrar mi verdiniz? (Boş bir anım olduğunda birazdan daha sonra ilk görüşüme bir göz atacağım - üzgünüm, burada çok yoğun!) –

0

git checkout -b FeatureA (oluşturabilir ve ödeme dalı)
git push origin FeatureA yeni şube FeatureA üzerinde

Work (kökeni yeni oluşturulan şube itin). Sen efendi içine birleştirmek istediğinizde sık birleştirir sonra Gelecekte

git rebase origin 

rebase istemiyoruz.

git checkout master 
git merge FeatureA 
git push origin master 
+0

Herzaman ben git rebase master 'git' itme başlangıç ​​menşeli/çoklu gönderenler 'Aşağıdaki ssh için: xxx ![reddedildi] çoklu gönderenler -> çoklu-gönderenler (hızlı ileri sarma) hata: bazı refs 'ssh: // xxx' için başarısız başarısız Geçmişi kaybetmemek için, hızlı olmayan güncelleştirmeler reddedildi . Tekrar basmadan önce uzaktan değişiklikleri (örn. 'Git çekme') birleştirin. Ayrıntılar için 'git push - help' bölümünün 'Hızlı-ileri' ile ilgili 'bölümüne bakın. – ben39

İlgili konular