Git geçmişini anlama
Git, geçmişi Team Foundation Sürüm Denetimi, Perforce veya Subversion gibi merkezi sürüm denetim sistemlerinden (CVCS) temel olarak farklı bir şekilde temsil eder. Merkezi sistemler, depodaki her dosya için ayrı bir geçmiş depolar. Git, geçmişi deponun tamamının anlık görüntülerinin grafiği olarak depolar. Git'te işlemeler olarak adlandırılan bu anlık görüntülerin birden çok ebeveyni olabilir ve düz çizgi yerine graf gibi görünen bir geçmiş oluşturabilir. Tarihteki bu fark inanılmaz derecede önemlidir ve CVCS'yi bilen kullanıcıların Git'i kafa karıştırıcı bulmalarının ana nedenidir.
İşleme geçmişiyle ilgili temel bilgiler
Basit bir geçmiş örneğiyle başlayın: üç 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. Dallar belirli işlemelere yönelik işaretçilerdir. Bu nedenle Git'te dallanma çok basit ve kolaydır.
CvCS ile karşılaştırıldığında Git'teki önemli bir fark, geliştiricinin deponun kendi tam kopyasına sahip olmasıdır. Uzak depodan en son işlemeleri alarak yerel depolarını uzak depoyla eşitlenmiş durumda tutmaları gerekir. Bunu yapmak için aşağıdaki komutu kullanarak ana dalı çekerler:
git pull origin main
Bu, uzak depodaki ana daldan yapılan ve varsayılan olarak Git adları origin
olan tüm değişiklikleri birleştirir. Bu çekme işlemi yeni bir işleme getirdi ve yerel depodaki ana dal bu işlemeye taşınır.
Dal geçmişini anlama
Şimdi kodda bir değişiklik yapma zamanı. Paralel olarak farklı özellikler üzerinde çalışırken 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ı oluşturmak içingit 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 olduğunu varsayalım.
İşlemelere, bu dal için cool-new-feature
işlendiği için dal tarafından erişilebilir.
Artık özellik tamamlandı, ana dalda birleştirilmelidir. Bunu yapmak için aşağıdaki komutu kullanın:
git merge cool-new-feature main
Birleştirme olduğunda geçmişin grafik yapısı görünür hale gelir. Git, dal başka bir dalla birleştirildiğinde yeni bir işleme oluşturur. Bu bir birleştirme işlemesidir. Çakışma olmadığından bu birleştirme işlemesinde herhangi bir değişiklik yoktur. Çakışmalar varsa, birleştirme işlemesi bunları çözmek için gereken değişiklikleri içerir.
Gerçek dünyada tarih
Burada, bir ekipte etkin geliştirmede koda daha yakından benzeyen bir Git geçmişi örneği verilmiştir.
Kendi dallarındaki işlemeleri aynı anda dalla main
birleştirilen üç kişi vardır.
Sonraki adımlar
GitHub ve Azure Repos'ta Git geçmişiyle çalışma veya Git günlük geçmişini basitleştirme hakkında daha fazla bilgi edinin.