Github'da barındırılan bir projeyi çatallarsam. Tüm dalları çatallayabilir miyim? Çatalımın hangi şubeye dayandığını nasıl bilebilirim? Başka bir deyişle, bilgisayarıma hangi şube indirilecek?
Github'da barındırılan bir projeyi çatallarsam. Tüm dalları çatallayabilir miyim? Çatalımın hangi şubeye dayandığını nasıl bilebilirim? Başka bir deyişle, bilgisayarıma hangi şube indirilecek?
Yanıtlar:
GitHub'daki tüm dallar bir çatalda kopyalanacaktır. (Açıkçası, bu ilk etapta GitHub'a asla gönderilmemiş dalları içermez.)
Ancak çatal, GitHub'dan GitHub'a bir işlemdir; PC'nize hiçbir şey kopyalanmaz. Git klonuyla tamamen aynı değil . “Bir projeyi klonladığımda ne kopyalanır?” Diye sormak istiyorsanız, kılavuzuna bakın git-clone(1)
.
Bu şekilde düşün:
Repo [sitory] , ekibin bir veya daha fazla branştaki ortak çalışmasına karşılık gelir. Tüm katkıda bulunanların kendi kopyaları vardır.
Ana deponun her bir çatalı , bir katılımcının çalışmasına karşılık gelir. Bir çatal, kullanıcı hesabınızda deponun bir klonunu depolamak için gerçekten bir Github (Git değil) yapısıdır. Bir klon olarak, çatalı yaptığınız anda ana depodaki tüm dalları içerecektir.
Nasıl çalışmak istediğinize bağlı olarak çataldaki ve / veya ana depodaki her şube birkaç tür şeye karşılık gelebilir. Her dal, projenin bir sürümüne başvurabilir, ancak düzeltmeler veya deneysel çalışma gibi farklı geliştirme kanallarına da karşılık gelebilir.
Çekme isteği (GitHub ekosistemde) görev karşılık gelir. Ana depoya izole edilmiş bitmiş bir göreve katkıda bulunmak istediğimde , o görevde yapılan taahhütlere karşılık gelen bir çekme talebi oluşturuyorum . Bu hareketin kaydedilmesini benim ya çekilir çatal ya da benim şube için ana repo .
Bir taahhüt yasasında yapılacak değişiklikler kümesidir. Bu Git ile ilgili en ilginç şeylerden biri. Dosyaları aktarmazsınız, değişiklik günlüklerini aktarırsınız.
Fork, GitHub tarafındaki bir klondur (her şeyi klonlar).
Bir repo klonlarken, söz konusu reponun tüm geçmişini tüm şubeleriyle birlikte alıyorsunuz.
Teoride uzak bir deponun varsayılan dalını değiştirebilseniz bile , GitHub deposundan bir klon esas olarak ana dalı arar. Yani, bir GitHub klonunun alacağı "varsayılan" dalı değiştirmek için, ana dalı yeniden adlandırmanız gerekir.
Github web sitesinden bir projenin çatalını oluşturursanız, tüm dalları upstream projesinden alırsınız.
Yeni basılan fork'unuzdan yerel PC'nize klonlarsanız origin
, PC'nizdeki uzaktan kumandanız çatalınızın Github'daki ana dalına işaret eder.
upstream
yapmanız gereken bir şeydir; ve size bunu nasıl yapacağınızı söylerler.
Bu çok iyi açıklanabilir. GitHub'da merkezi bir deponuz var. Bazı değişiklikler yapmak için kişisel bilgisayarınızda bir kopyasını aldığınızda, ana deponun bu yerel klonuna çatal denir.
Şube farklı bir şeydir ve çatal / depoya dahildir. Aslında şube, gelişimin farklı aşamalarındaki işinizdir. Bir dizi işlevi kaydetmek, farklı kullanıcılara erişim sağlamak, siteyi müşteriye göstermek vb. İçin gerektiğinde ve gerektiğinde oluşturulurlar.
Branches'i ne zaman ve Forks'u ne zaman kullandığımıza dair gerçek hayattan bir örnek paylaşmak istiyorum.
Mağazamızda GitLab var ve bazen bir Laravel projesinden paketler üzerinde çalışmamız gerekiyor. Normalde bir şube oluştururuz ve gerçek Laravel projesiyle çalışırken yerel VM geliştirici ortamımızda test ettiğimiz şubeye değişiklikleri göndeririz.
Diyelim ki projemiz şu adrestedir:
https://github.com/yardpenalty/mainproject.git
Şube kullanımı:
Şube çağrıldı diyelim It_doesnt_matter
Üretim için istediğimiz şekilde şubemize sahip olduktan sonra, bu şubeye son adımımızı atıyoruz ve daha sonra test için UAT'ye giren bir birleştirme talebi oluşturuyoruz.
Birleştirme gelen It_doesnt_matter
şube şimdi ana projeye itilir
en https://github.com/yardpenalty/mainproject.git
Diyelim ki paket proje şu adrestedir:
https://github.com/yardpenalty/mypackage.git
Ana projenin üretimde bu paketi kullandığını unutmayın, bu nedenle onları bu pakete iterek değişiklik yapamayız (diğer nedenlerin yanı sıra). Diyelim ki bir web geliştiricisinin üretimde değişiklik yapmak için bu paketi düzenlemesi gerekiyor.
Paketi vb. Yayınlamadan değişikliklerimizi göremeyeceğimiz için basit bir şube çalışmayacaktır.
Çatal Kullanımı: Şimdi, paketimizle biraz hile yapmamız gerektiğinde, üretim paketinin bir çatal aracılığıyla bir klonunu oluşturuyoruz. Composer.json dosyaları, artık bir Kullanıcı veya Grup yolunda bulunan çatalı işaret edecek şekilde güncellenebilir.
Böylece bir çatal oluşturacağız https://github.com/yardpenalty/mypackage.git
ve ara https://github.com/yardpenalty/yards/mypackage.git
Şimdi composer.json dosyamızı "depolarımızda" bu paketi işaret edecek şekilde güncelleyebiliriz : [böyle bir dizi gibi ve uzaklaşıyoruz!
{
"type": "github",
"url": "https://github.com/yardpenalty/yard/mypackage.git"
}
]