Git: Dal mı çatal mı?


17

İki versiyonu olacak bir oyun projem var:

  1. Oyunun basit bir sürümü, çekirdek.
  2. Oyunun gelişmiş bir versiyonu.

Genel depomda 1. versiyona sahibim ve sadece üzerinde çalışacağım. 2. versiyona gelince, iki arkadaşım ve ben üzerinde çalışacağız. Önemli olan, iki versiyonun veri havuzumda kalmasını istiyorum.

Bunun için şubeler kullanabileceğimi düşündüm, ancak bu soru ve cevabı göz önüne alındığında , sürüm oluşturma açısından bunu yapmak iyi bir uygulama değil. Bulduğum kadarıyla, kendi havuzunuzu çatallamak mümkün değil.

Burada benim seçeneklerim neler? Her iki sürümü de depomda nasıl saklayabilirim?


3
Çatal, başka bir yerde saklanan bir daldır.

@MichaelT Tamam. Çatallar dallar gibi bir noktada mı birleştirilecek?
Varaquilex

22
Çatal bir git kavramı değil, github konseptidir. Basitçe klonlar ve hesabınıza koyar. Yani klonlama aradığınız şey. Bkz. Stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr

@Varaquilex Her iki sürümü de tek bir depoda tutmanız gerekir mi? Ayrıca forkbir depo oluşturmak, hesabınızda yeni bir depo oluşturacaktır.
Mehdi

1
Neden sadece basit modda veya gelişmiş modda çalışabilen bir sürümü yok? Tabii ki kodun bazı bölümleri sadece basit ve bazı bölümleri sadece gelişmiş olarak aktif olurdu, ama çok fazla paylaşılacağını hayal ediyorum.
bdsl

Yanıtlar:


11

Bana göre iki Şubeye değil iki Depoya ihtiyacınız var gibi görünüyor . Şube, sonunda kodun geri kalanıyla birleştirmek için tek bir havuzdaki değişiklikleri ele alan bir mekanizmadır.

Benzer bir kod tabanının her iki sürümünü de aynı depoda tutmak istiyorsanız , tek seçeneğiniz bir Şubeye gitmektir. , ancak daha önce de belirtildiği gibi, bir şubenin ana amacı bazı belirli taahhütleri bir şekilde ayırmaktır geliştirme sürecinde kodun geri kalanıyla çelişmediklerini ve gitmeye hazır olduklarında bunları birleştirmediklerini unutmayın.

Bir deponun iki farklı dalın olduğu durumlar vardır - örneğin, aynı kaynak kodunun 32 bit ve 64 bit sürümleri, ancak bu seçenek varsa, ayrı havuzlar için gitmenizi öneririm.


6

"Klonlamam veya çatallamam" sorusunun cevabı "bu projenin kendi kişisel versiyonumu ister miyim?" Sorusunun cevabı ile tamamen aynı. evet = çatal, hayır = havuzu klonla.

Git'te dal, genellikle geçici olan ve silinebilecek hafif bir şeydir. Çatal (github'da), önceki bir projeye dayanan yeni bir projedir. Ekip üyesi olarak üzerinde çalışmak için bir havuzu klonladınız.

Birçok kamu projesi, çalışma değişikliklerini ana projenin dışında tutmak için projeyi çatallandırmanızı sağlar.

2. aşama için projeyi çatallayın ve çalışan bilgisayarınıza klonlayın ve arkadaşlarınızın da aynısını yapmasını sağlayın.


Kendi projemi nasıl çatallayabilirim?
Varaquilex


Bunu nasıl yapacağımı biliyorum, mesele, kendi projenizi klonlamaya çalıştığınızda, sadece yenileme düğmesine bastığınız gibi depoya yönlendiriliyorsunuz. Kendi projenizi geliştirmeye çalıştıktan sonra depolarınıza göz attığınızda ek depolar listelenmez. Sanırım yeni bir repo yapacağım, çatallamak istediğim diğer repo içeriğini kopyalayacağım ve oradaki diğer insanlarla çalışmaya devam edeceğim.
Varaquilex

0

Gerçekten istediğiniz gibi bir alt modül. İlk repoyu (özel basit repo'nuzu) oluşturup daha sonra gelişmiş sürüm repo'suna alt modül olarak eklerseniz, özel basit repo'yu geliştirirken gelişmiş repodaki alt modüldeki değişiklikleri izleyebilmeli ve çekebilmelisiniz.


1
Birkaç kişi Ryan'ın tepkisini -1 zamana ayırdı, ancak neden bir yorum yapmak için zaman ayırmadı ve bu davranış SO yönergelerinin ruhuna aykırı. OP'nin sorusunda, "çekirdek" her iki ağaçta da aynıysa, hem çekirdek çevresinde hem "basit" hem de "gelişmiş" bir sargıya sahipse, bu cevap en azından mantıklıdır.
Scott Prive

Ben iptal ettim ama muhtemelen sizin gibi bir alt modülün neden iyi olacağını ve nasıl çalışacağını açıklayan bir açıklama içermelidir . Ortak kodu bir alt modül olarak dahil edilebilecek bir kütüphaneye bölmek iyi bir fikirdir, ancak bunun yapılması gerektiğini belirtmeden bir alt modülün önerisi hemen mantıklı görünmemektedir.
Sean Burton
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.