Sürüm denetimi nedir?
Sürüm denetim sistemi (VCS), bir dosya koleksiyonundaki değişiklikleri izleyen bir program veya program kümesidir. VCS'nin bir hedefi, tek tek dosyaların veya projenin tamamının önceki sürümlerini kolayca geri çağırmaktır. Diğer bir hedef de, birkaç ekip üyesinin birbirlerinin çalışmalarını etkilemeden aynı dosyalarda bile aynı anda bir proje üzerinde çalışmasına izin vermektir.
VCS'nin bir diğer adı da yazılım yapılandırma yönetimi (SCM) sistemidir. bu iki terim genellikle birbirinin yerine kullanılır; aslında Git'in resmi belgeleri git-scm.com... Teknik olarak, sürüm denetimi SCM'de yer alan uygulamalardan yalnızca biridir. VCS, kitaplar ve çevrimiçi öğreticiler de dahil olmak üzere yazılım dışındaki projeler için kullanılabilir.
VCS ile şunları yapabilirsiniz:
- Projenizde yapılan tüm değişiklikleri, bunların ne zaman ve kim tarafından yapıldığını görebilirsiniz.
- Arkasındaki mantığı açıklamak için her değişikliğe bir ileti ekleyin.
- Projenin tamamının veya tek tek dosyaların geçmiş sürümlerini alın.
- Deneysel değişikliklerin yapılabildiği dallar oluşturabilirsiniz. Bu özellik, ana dalı etkilemeden çeşitli değişiklik kümelerinin (örneğin, özellikler veya hata düzeltmeleri) büyük olasılıkla farklı kişiler tarafından aynı anda üzerinde çalışılmasını sağlar. Daha sonra, saklamak istediğiniz değişiklikleri ana dalda birleştirebilirsiniz.
- Yeni bir sürümü işaretlemek için bir sürüme etiket ekleyin.
Git hızlı, çok yönlü, yüksek oranda ölçeklenebilir, ücretsiz, açık kaynak bir VCS'dir. En önemli yazarı Linux'ın yaratıcısı Linus Torvalds'dur.
Dağıtılmış sürüm denetimi
CVS, Subversion (SVN) ve Perforce gibi önceki VCS örnekleri, bir projenin geçmişini depolamak için merkezi bir sunucu kullanıyordu. Bu merkezileştirme, tek sunucunun aynı zamanda tek bir hata noktası olma olasılığına sahip olduğu anlamına geliyordu.
Git dağıtılır, yani projenin tam geçmişi hem istemcide hem de sunucuda depolanır. Ağ bağlantısı olmadan dosyaları düzenleyebilir, yerel olarak denetleyebilir ve bağlantı kullanılabilir olduğunda bunları sunucuyla eşitleyebilirsiniz. Sunucu kapansa da projenizin bir yerel kopyası olacaktır. Teknik olarak bir sunucunuzun olması bile gerekmez. Değişiklikler e-postada geçirilebilir veya çıkarılabilir medya kullanılarak paylaşılabilir, ancak hiç kimse Git'i pratikte bu şekilde kullanmaz.
Git terminolojisi
Git'i anlamak için terminolojisini anlamalısınız. Git kullanıcılarının sık kullandığı terimlerin kısa bir listesi aşağıdadır. Şimdilik ayrıntılarla ilgilenmeyin; tüm bu terimler, bu modüldeki alıştırmalarda size yol gösterirken tanıdık gelecektir.
Çalışma ağacı: Üzerinde çalışılan projeyi içeren iç içe dizinler ve dosyalar kümesi.
Depo (depo):Git'in bir projenin tüm geçmişini ve meta verilerini tuttuğu çalışma ağacının en üst düzeyinde yer alan dizin. Bunlara hemen her zaman depo adı verilir. Çıplak depo, çalışma ağacının parçası olmayan depodur; paylaşım veya yedekleme için kullanılır. Çıplak depo genellikle project.git gibi .git ile biten bir ada sahip bir dizindir.
Karma: Bir dosyanın veya başka bir nesnenin içeriğini sabit sayıda basamak olarak temsil eden bir karma işlevi tarafından üretilen sayı. Git 160 bit uzunluğunda karmalar kullanır. Karma kullanmanın bir avantajı Git'in içeriğinin karmasını oluşturarak ve sonucu önceki karmayla karşılaştırarak dosyanın değişip değişmediğini bildirebilmesidir. Dosya zaman ve tarih damgası değiştirilirse ancak dosya karması değiştirilmezse Git, dosya içeriğinin değiştirilmediğini bilir.
Nesne: Git deposu, her biri sha-1 karması tarafından benzersiz olarak tanımlanan dört tür nesne içerir. Blob nesnesi normal bir dosya içerir. Ağaç nesnesi bir dizini temsil eder; adları, karmaları ve izinleri içerir. İşleme nesnesi çalışma ağacının belirli bir sürümünü temsil eder. Etiket, işlemeye eklenmiş bir addır.
İşleme: Fiil olarak kullanıldığında işleme, işleme nesnesi yapmak anlamına gelir. Bu eylem adını veritabanına yönelik işlemelerden alır. Bu, yaptığınız değişiklikleri başkalarının da sonunda görebilmesi için işliyor olduğunuz anlamına gelir.
Dal: Dal, bağlı işlemelerin adlandırılmış bir dizisidir. Daldaki en son işleme baş (head) olarak adlandırılır. Bir depoyu başlatırken oluşturulan varsayılan dal, genellikle Git'te olarak adlandırılır
main
master
. Geçerli dalın başı olarak adlandırılırHEAD
. Dallar, Git'in son derece kullanışlı bir özelliğidir çünkü geliştiricilerin dallarda bağımsız olarak (veya birlikte) çalışmasına ve daha sonra değişikliklerini varsayılan dalla birleştirmesine olanak sağlar.Uzak: Uzak, başka bir Git deposuna yapılan adlandırılmış başvurudur. Depo oluşturduğunuzda Git, gönderme ve çekme işlemleri için varsayılan uzak değer olan adlı
origin
bir uzak sunucu oluşturur.Komutlar, alt komutlar ve seçenekler: Git işlemleri ve
git pull
gibigit push
komutlar kullanılarak gerçekleştirilir.git
bir komut vepush
veyapull
ise alt komuttur. Alt komut Git'in gerçekleştirmesini istediğiniz işlemi belirtir. Komutlara sık sık kısa çizgi (-) veya çift kısa çizgi (--) kullanan seçenekler eşlik eder. Örneğin,git reset --hard
.
Bu terimler ve ve gibi push
pull
diğer terimler kısa süre sonra daha anlamlı olacaktır. Ancak bir yerden başlamanız gerekir ve modülü tamamladıktan sonra geri dönüp bu terimler sözlüğüne bakmanın yararlı olabileceğini düşünebilirsiniz.
Git komut satırı
GitHub Desktop dahil olmak üzere Git için çeşitli GUI'ler kullanılabilir. Microsoft Visual Studio Code gibi birçok programlama düzenleyicisinin Git arabirimi de vardır. Hepsi farklı çalışır ve farklı sınırlamaları vardır. Hiçbiri Git'in tüm işlevselliğini uygulamaz.
Bu modüldeki alıştırmalarda Git komut satırı( özellikle Azure Cloud Shell'de yürütülen Git komutları) kullanılır. Ancak, hangi işletim sistemini kullanıyor olursanız olun Git'in komut satırı arabirimi aynı şekilde çalışır. Artı olarak, komut satırı Git'in tüm işlevselliğine erişebilmenizi sağlar. Git'i yalnızca GUI aracılığıyla gören geliştiriciler bazen kendilerini çözümleyemedikleri hata iletileriyle karşı karşıya bulurlar ve yeniden çalışmaya başlamak için komut satırına başvurmaları gerekir.
Git ve GitHub
Git ile çalışırken, sunduğu özelliklerle GitHub'da sunulan özellikler arasındaki farkları merak edebilirsiniz.
Daha önce belirtildiği gibi Git, birden çok geliştiricinin ve diğer katkıda bulunanların bir proje üzerinde çalışmak için kullanabileceği dağıtılmış bir sürüm denetim sistemidir (DVCS). Bir veya daha fazla yerel dal ile çalışmak ve bunları uzak bir depoya göndermek için bir yol sağlar.
GitHub, temel teknolojisi olarak Git’ten yararlanan bir bulut platformudur. GitHub, projeler üzerinde işbirliği sürecini basitleştirir ve geliştiricilerin ve kullanıcıların birlikte çalışmak için kullanabileceği bir web sitesi, daha fazla komut satırı aracı ve genel akış sağlar. GitHub, daha önce bahsedilen uzak depo görevi görür.
GitHub tarafından sunulan temel özellikler şunlardır:
- Sorunlar
- Tartışmalar
- Çekme istekleri
- Notifications
- Etiketler
- Eylemler
- Çatallar
- Projeler
GitHub hakkında daha fazla bilgi edinmek için GitHub'a Giriş Microsoft Learn modülüne veya GitHub'ı kullanmaya başlama yardım belgelerine bakın.
Sonraki adımda Git'i kendiniz deneyeceksiniz!