Git geçmişini anlama
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Git, deponun tamamında işlemeler olarak adlandırılan anlık görüntülerin grafiği olarak geçmişi depolar. Her işleme ayrıca önceki bir veya daha fazla işlemeye yönelik bir işaretçi içerir. İşlemeler birden çok ana dosyaya sahip olabilir ve düz çizgi yerine graf gibi görünen bir geçmiş oluşturabilir. Geçmişteki bu fark inanılmaz derecede önemlidir ve kullanıcıların Git'i kafa karıştırıcı bulmalarının ana nedenidir.
Not
Git geçmişinizde yaptığınız değişikliği bulamazsanız Git'te Git geçmişi basitleştirmenin nasıl çalıştığı hakkında daha fazla bilgi edinin. Değişikliklerimi kaybettim: Git'in geçmişini basitleştirmeye göz atma.
İşleme geçmişiyle ilgili temel bilgiler
Basit bir geçmiş örneğiyle başlayın: 3 doğrusal işlemeye sahip bir depo.
İşleme A, B işlemesinin üst öğesi, B işlemesi ise C işlemesinin üst öğesidir. Bu geçmiş, CVCS'ye çok benzer.
C işlemeye işaret eden ok bir daldır.
Git deposundaki ana hat dalı için varsayılan ad olduğundan adlandırılmıştır main
.
Dallar belirli işlemelere yönelik işaretçilerdir. Bu nedenle Git'te dallanma çok basit ve kolaydır.
Git'te CVCS ile karşılaştırıldığında önemli bir fark, deponun kendi tam kopyasına sahip olduğumdur. Uzak depodan en son işlemeleri alarak yerel depomu uzak depoyla eşitlenmiş durumda tutmam gerekiyor. Bunu yapmak için aşağıdaki komutu kullanarak ana dalı çekeceğim:
git pull origin main
Bu, uzak deponun dalından main
(varsayılan olarak çağrılır origin
) tüm işlemeleri yerel deponun main
dalı olarak kopyalar ("çeker"). Çekme işlemi yeni bir işleme kopyaladı ve main
yerel depodaki dal şimdi bu yeni işlemeye işaret ediyor.
Dal geçmişini anlama
Şimdi kodumda bir değişiklik yapmak istiyorum. Farklı özellikler üzerinde paralel olarak çalıştığınız birden çok etkin dal olması yaygın bir durumdır. Bu, yeni dalların ağır olduğu ve nadiren oluşturulduğu CVCS'nin tam tersidir. İlk adım, aşağıdaki komutu kullanarak yeni bir dalı kullanıma almaktır:
git checkout -b cool-new-feature
Bu, iki komutu birleştiren bir kısayoldur: git branch cool-new-feature
dalını oluşturmak ve ardından git checkout cool-new-feature
dalda çalışmaya başlamak için.
İki dal artık aynı işlemeye işaret eder.
E ve F olmak üzere iki yeni işlemede dalda cool-new-feature
birkaç değişiklik yapacağım.
Bu dalda cool-new-feature
yaptığımdan beri işlemelerime dal tarafından ulaşılabilir.
Özelliğimi bitirdim ve ile birleştirmek main
istiyorum.
Bunu yapmak için aşağıdaki komutu kullanacağım:
git merge cool-feature main
Birleştirme olduğunda geçmişin grafik yapısı görünür hale gelir. Git, dalımı başka bir dalla birleştirdiğimde yeni bir işleme oluşturuyor. Bu bir birleştirme işlemesidir. Çakışma yaşamadığım için bu birleştirme işlemesinde hiçbir değişiklik yok. Çakışmam olsaydı, birleştirme işlemesi bu çakışmaları çözmek için gereken değişiklikleri içerecekti.
Gerçek dünyada tarih
Burada, ekipteki etkin geliştirmede koda daha yakından benzeyen bir Git geçmişi örneği verilmiştir. Kendi dallarındaki işlemeleri aynı anda ana dalda birleyen üç kişi vardır.
Artık dalların ve birleştirmelerin grafın şeklini nasıl oluşturduğunu anladığınıza göre, bu çok korkutucu olmamalıdır!