Share via


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.

Three commits in a line

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

A fourth commit, D, is added to the line

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çin
  • git checkout cool-new-feature dalda çalışmaya başlamak için

Branch cool-new-feature is added

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

Add commits to a branch

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

Merge a branch

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.

Console log of git graph

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.