Aracılığıyla paylaş


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.

bir satırda üç işleme

İş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.

dördüncü işleme olan D satırına eklenir

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.

Branch cool-new-feature eklendi

İ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.

iki yeni işleme eklendi

Bu dalda cool-new-feature yaptığımdan beri işlemelerime dal tarafından ulaşılabilir. Özelliğimi bitirdim ve ile birleştirmek mainistiyorum. Bunu yapmak için aşağıdaki komutu kullanacağım:

git merge cool-feature main

birleştirmeden sonra

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.

git graph konsol günlüğü

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!