SORU
18 ŞUBAT 2009, ÇARŞAMBA


rebase ve gıt gıt bas:-hızlı ileri olmayan, neden kullanılır?

Diğer katılımcılar için kullanılabilir olması gereken ve sürekli master ile güncel kalmak için gereken bir şube var.

Ne yazık ki, her zaman 'git' ve sonra itmeye çalış, 'non-hızlı ileri' itme mesaj ve kürtaj. sonuçları rebase yapıyorum Burada bas etmenin tek yolu güç kullanmaktır. 'Git birleştirme' yerine eğer benim şube duyulursa rebasing ve diğerleri üzerinde çalışıyoruz? kullanmam gerektiğini anlamına mı geliyor

CEVAP
18 ŞUBAT 2009, ÇARŞAMBA


Git nasıl çalıştığı hakkında bir kaç not () teknik olmayan:

Rebase zaman, git "" temiz bir geçmiş üstüne. onları recommits soru ve taahhüt alır Bu gösteren: tarihi önlemektir

Description: tree -> mywork -> merge -> mywork -> merge -> mywork -> merge
Commit SHA1: aaaa -> bbbb   -> cccc  -> dddd   -> eeee  -> ffff   -> gggg

Bir rebase sonra, bu gibi (veya benzeri) görünebilir:

Description: tree -> rebase
Commit SHA1: aaaa -> hhhh

Sorun yok atmaya çalışıyorsunuz taahhütDEĞİL soyundanbu dalın ucunda işlemek için bastırıyorlar.

Şimdi, aynı bilgi işleyen biliyorsun, ama git Sadece orada tamamlar üzerine yazarak sorumlu olmak (bbbb-gggg yukarıdaki örnekte).

< / ^ hr .

Paylaşılan Repo Model

Eğer paylaşılan bir depo kullanıyorsanız, o zaman bu gibi şeyler Ulu kafa karıştırıcı olabilir. Nedenini de açıklayayım. Demek başka bir geliştirici şube indirdi, ve tamamlar- ^aaaa . ggggkendi dalında. O zaman bir taahhüt olunıııı

Bu arada, rebased ve bir itme, ağaç böyle bakmak neden zorla:

Description: tree -> rebase
Commit SHA1: aaaa -> hhhh

Diğer geliştirici itmeye çalıştığında, bir "non-hızlı ileri" mesajı almış olur. Birleştirme yaptığında, o zaman her ikisi de geçmişlerini birlikte YENİDEN, ve birkarmaşa

Böyle bir şey (kirli):

Description: tree -> rebase -> mywork -> merge -> mywork -> merge -> mywork -> merge -> devwork -> merge 
Commit SHA1: aaaa -> hhhh   -> bbbb   -> cccc  -> dddd   -> eeee  -> ffff   -> gggg -> iiii    -> jjjj

Eğer Diğerleri çekerek VE iterek, diğer bir deyişle, birleştirme gıt sopa, ya da daha iyiİTEREK KAÇININrebase (ve sadece işinizi rebase) sonrasına kadar.

< / ^ hr .

Herkesin Görebileceği Bir Depo Modeli

Belki de sadece insanların repo çekmek için mümkün olmak istiyorum (daha fazla) gittish farklı bir model kullanıyorsunuz. Bu durumda, git push --force sonra ayak uydurarak onunla başa çıkabilirim çünkü çok kötü değil. Rebasekendi değiştirirkendi yamalar vermeden önce yaptığınız değişiklikleri üzerine olacak. Tüm berbat alıyorum repo önler.

Ancak, sizin için daha iyi bir yol olabilir.git push --ayna

From http://www.kernel.org/pub/software/scm/git/docs/git-push.html

Her ref itmek için adlandırma yerine, tüm başvuruları belirtir $GİT_DİR/referans içerir ama (/ bunlarla sınırlı olmamak//başkanları başvuruları için, hakem/hakem/ etiketler/uzaktan kumanda/) uzak depoya yansıyor. Yeni oluşturulan yerel hakem olacak uzak amaçla, yerel itti güncelleme başvuruları güncelleme güç olacaktır uzak uç ve silinmiş hakem olacak uzaktan sonundan itibaren kaldırılacak. Bu yapılandırma varsayılan. seçenek uzak..ayna ayarlanır.

< / ^ hr .

Bir büyük şeyler hakkındagitçok esnek olduğunu ve iş akışları birçok farklı tür sağlar. Ama gerçek gücünü dağıtılmış bir model olduğu gerçeği yatıyor, en ROI bu şekilde kullanarak hasat edilebilir inanıyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006