2009-11-03 8 views
15

Bazen bir kerede birkaç şubeyle çalışıyorum. Usta, yayın-1.1 ve deneysel olarak adlandırılan şubelerim olduğunu varsayalım. Yeni bir dosya oluşturuyorum ya da deneysel bir değişiklik yapıyorum ve diğer dallara uygulanacak tek bir değişikliğin olmasını istiyorum.Tek bir işlemi nasıl birleştiririm?

Bunu ben'de yapabilir miyim? İşlemi başka bir şubeye bağlarsam, otomatik olarak "hızlı ileri" git ve aradaki tüm işlemleri içerir. Ancak bu kullanım durumunu ele almanın bir yolu olmalı.

cevap

22

Ne yapmak istediğiniz cherry picking olarak adlandırılır. Sen kiraz alabilirsiniz tek aşağıdaki komutu kullanarak işlemek:

$ git cherry-pick <commit hash or name> 

Bu, geçerli dalı içine taahhüt sadece bundan değişikliği dahil edecektir. Bununla birlikte, bunun bir yeni taahhüt oluşturduğunu unutmayın; Yeni işlemek bu kiraz aldı (tarih ve yazar işlemek ve hatta aynı) işlemek, ancak yeni bir olarak görüyorum yılında taahhüt edeceğiz yüzden, bir yeni taahhüt teknik olarak örneğin gitk tamamen aynı değişiklikler var . Değişikliği görmek istediğiniz her şube için kiraz seçimini de yapmanız gerekir.

4

Bunun yerine değişikliği yapmadan önce bilmek gerekir çözüm, ama ne yazık ki bir, en erken şube kapalı, sadece (bu yüzden "konu şube" olarak adlandırılır) bu değişim için ayrı şube yaratmaktır veya en erken işlemek Bu mantıklı ve bu dalı, bu taahhüde ihtiyaç duyan herhangi bir şubeye birleştirir.

Bazı durumlarda diğer çözüm, bakım branşında değişikliği yapmak istikrarlı dalı haline bakım şube birleştirme ve geliştirme dalında içine kararlı şube birleştirme olabilir.

Junio ​​C Hamano (Git sürdürme), bloğuna bu konuda yazmış: Resolving conflicts/dependencies between topic branches early

+0

o blog girişine bir bağlantı var mı? Bence bir Git otoritesinden gelen faydalı olur. –

+0

Belki bu blog girişi? http://gitster.livejournal.com/27297.html – VonC

+0

Kiraz toplaması bundan daha uygun görünmektedir, pardon. –