Git geçmişini anlama

Git, deponun tamamına işleme adı — verilen anlık — görüntülerin grafiği olarak geçmişi depolar. Her işleme ayrıca bir veya daha fazla önceki işlemenin işaretçisini içerir. Commit'ler, düz çizgi yerine graf gibi görünen bir geçmiş oluşturarak birden çok ebeveyne sahip olabilir. Tarihteki bu fark inanılmaz önemlidir ve kullanıcıların Git'i kafa karıştırıcı bulmalarının ana nedenidir.

Not

Yaptığınız git geçmişinde yaptığınız bir değişikliği bulamazsanız Git geçmişi basitleştirmenin nasıl çalıştığını öğrenmek için git değişikliklerimi kaybetme: Git'ingeçmişi basitleştirmesi'ne göz atarak.

Yürütme geçmişiyle ilgili temel bilgiler

Basit bir geçmiş örneğiyle başlama: 3 doğrusal işlemeye sahip bir repo.

bir satırda üç işleme

Commit A, B işlemenin üst öğesi, B işlemesi ise C işlemenin üst öğesidir. Bu geçmiş, CVCS'ye çok benzer. C işlemeye işaret eden ok bir daldır. Bu, git main depos unda mainline dal için varsayılan ad olduğundan olarak adlandırılmıştır. Dallar belirli işlemelerin işaretçileridir, bu nedenle Git'te dallama bu kadar basit ve kolaydır.

Git'te CVCS ile karşılaştırıldığında önemli bir fark, depom için kendi tam kopyama sahip olmaktır. Uzak depodan en son işlemeleri alarak yerel depom ile uzak depoyu eşit tutmam gerekiyor. Bunu yapmak için aşağıdaki komutla ana dalı çekebilirsiniz:

git pull origin main

Bu, tüm işlemeleri uzak depolamanın dallarından (varsayılan olarak çağrılır) yerel main depolamanın dallarına kopyalar ("çeker"). origin main Çekme işlemi yeni bir işleme kopyaladı ve yerel repoda dal artık bu main yeni işlemeye işaret ediyor.

satıra dördüncü işleme (D) eklenir

Dal geçmişini anlama

Şimdi kodumda bir değişiklik yapmak istiyorum. Paralel olarak farklı özellikler üzerinde çalıştığın birden çok etkin dal olması yaygın bir durum olabilir. Bu, yeni dalların yoğun olduğu ve nadiren oluşturulan CVCS'nin tersidir. İlk adım, aşağıdaki komutu kullanarak yeni bir dala göz atabilirsiniz:

git checkout -b cool-new-feature

Bu, iki komutu birleştiren kısayolu içerir: dal oluşturmak ve ardından git branch cool-new-feature git checkout cool-new-feature dalda çalışmaya başlamak için.

Dal cool-new-feature eklendi

İki dal artık aynı işlemeye işaret ediyor. Dalda E ve F olmak için cool-new-feature iki yeni işlemede birkaç değişiklik yapacaktır.

iki yeni işleme eklendi

Commit'lerimi bu dalda cool-new-feature yapılan işlemeler dal tarafından ulaşılabilir hale geldi. Özelliğimi yaptım ve bunu ile birleştirmek main istiyorum. Bunu yapmak için aşağıdaki komutu kullanıyrm:

git merge cool-feature main

birleştirmeden sonra

Birleştirme olduğunda geçmişin grafik yapısı görünür hale gelir. Dalımı başka bir dala birleştir bana Git yeni bir işleme oluşturur. Bu bir birleştirme işlemesidir. Çakışmam olduğu için bu birleştirme işlemesinde herhangi bir değişiklik yok. Çakışmalar olursa, birleştirme işlemesi bu çakışmaları çözmek için gereken değişiklikleri içerir.

Gerçek dünyada geçmiş

Git geçmişine, takım üzerinde etkin geliştirme aşamasındaki koda daha yakından benzeyen bir örnek burada verilmektedir. Kendi dallarından ana dala commit'leri yaklaşık olarak aynı zamanda birleştiren üç kişi vardır.

Git grafiğinin konsol günlüğü

Dalların ve birleştirmelerin grafı nasıl şekillendireni anlıyoruz. Bu çok fazla korkutucu olmayacaktır!