VCS — Git Terimler

Bircan Özmen
4 min readMar 26, 2023

--

Merhabalar herkese, bir önceki yazımda değindiğim gibi bu yazımızda VSC’ye giriş aşamasında öğrenmemiz gerektiğini düşündüğüm terimlerden konuşacağız.

VCS dünyasında öğrenmemiz gereken birçok terim, birçok komut var fakat benim deneyimlerime göre önerim direkt olarak komutlara girmeden önce VCS’nin çalışma mantığını anlamamız yönünde. O sebeple bugün VCS dünyasına girdiğiniz ilk andan son ana itibaren sıklıkla karşılaşacağınız, peşinizi bırakmayacak olan terimlerle göz atacağız.

İlk terimimizle başlayalım;

Merge: Merge dendiğinde akla ilk gelen kelimenin İngilizce karşılığı olan birleştirmek olur. VCS dünyasındaki kullanımı da bundan çok uzak değil aslında. Şöyle düşünelim bizim bir main branch’ imiz birde bir özelliği eklemek istediğimiz feature branch’ imiz var. feature branch ’indeki işlemlerimiz bitti, onay aldı ve denildi ki artık bu feature branch’ indeki kodları ana branch’ imiz olan main branch’ ine de yollayalım yani merge edelim. İşte tam bu aşamada farklı bir branch’ deki değişimleri üzerinde çalıştığınız ana branch’ e entegre etme işlemini yani merge işlemini gerçekleştiririz.

Branch: Üstte değindik aslında bir ekipte kişilerin kodlar üzerinde yaptığı değişimlerin bir başkasının yaptığı değişimi doğrudan etkilemesinin önüne geçmek adına kişilerin farklı dallarda çalışmasına olanak sağlayan yapılardır. Onay alan branch merge edilir ve her yeri branch açıldığında ana branch’ den pull alınması durumunda yapılan değişimler aynen gelir.

Fork: En yalın haliyle bir proje/ kod bloğu deposundan kopya oluşturmak anlamına gelir. Bu işlem, bir projeyi başka bir kullanıcının kopyalamasına izin verir ve bunun üzerinde değişiklik yapmasına olanak sağlar. Fork işlemi, açık kaynaklı projelerde çok sık kullanılır. En sık kullanımını GitHub’da görmemiz mümkündür. Projeyi fork’ladığınız takdirde open source bir projeyi sizlerde düzenleme hakkına sahip olursunuz.Git fork işlemi, açık kaynak kodlu projelerde yaygın olarak kullanılan bir yöntemdir ve geliştiricilerin işbirliği yapmasını kolaylaştırır.

Local — Remote: Git, dağıtık bir sürüm kontrol sistemi olduğundan, hem local hem de uzak (remote) depolama alanlarını kullanır. Şöyle düşünelim bir uzak depolama alanından örneğin GitHub’dan bir projeyi kendi bilgisayarınıza clone’ layacaksınız cümleniz şu olmalı remote’ta ki projeyi local’ ime clone’ ladım. Yani ben uzak depodan bir projeyi kendi bilgisayarıma/ local’ ime aldım ve üstünde değişim yaptıkça uzak sunucuya/ remote’a yönlendiriyorum. Local depo, tamamen sizin bilgisayarınızda olduğu için, çalışmalarınızı offline ortamda yapabilirsiniz. Remote depo ise diğer geliştiricilerin katkı sağlamasına izin verir ve bir projenin sürdürülebilir olmasını sağlar.

Commit: Tamam şimdi remote’ da ki projeyi aldık local’imize clone’ladık sırada ne var? Değişim yapmak 🙂 ben değişimleri yaptım bunu remote’ a yollamaya hazırım o zaman ne yapmalıyım? Yaptığımız değişimleri kendi local’ imizde kaydedip aynı zamanda remote’ a uzak sunucuya yollamak için yapmamız gereken şey; commit atmaktır. Commit ingilizcede teslim etmek anlamına gelmektedir. Yani değişim yaptıkça onları teslim etmemiz, commit’ lememiz gerekiyor.

Repository: Bir proje veya yazılımın kod, belge, resim ve diğer dosyalarını sakladığı yerdir. Git, bir versiyon kontrol sistemi olduğu için, repository’ler (depolar) proje veya yazılımın tüm versiyonlarını, değişikliklerini ve sürümlerini saklar. Bir repository, genellikle bir sunucuda veya Git servis sağlayıcısında barındırılır. Geliştiriciler, local bilgisayarlarında projeyi düzenleyip değişiklikleri kaydettikten/ commit’ ledikten sonra, bu değişiklikleri repository’ e (depoya) yüklerler. Bu sayede, diğer geliştiriciler bu değişiklikleri görebilir ve projeye katkı sağlayabilirler. Repository’ ler, açık kaynaklı yazılımlarda ve büyük ölçekli projelerde sıklıkla kullanılır. Açık kaynaklı yazılımlarda, repository’ler, projenin herhangi bir geliştiricinin katkıda bulunmasına izin vermesini sağlar. Büyük ölçekli projelerde ise, repository’ ler, proje yöneticilerinin tüm geliştiricilerin çalışmalarını takip etmelerine olanak sağlar.

Clone: Bir Git deposunu kopyalamak için kullanılan bir Git komutudur. Bu komut, bir sunucuda depolanan bir Git deposunu yerel bir bilgisayara kopyalar ve bu şekilde projenin yerel bir kopyasını edinmemizi sağlar. Komutu kullanmak için, “git clone” komutunu kullanarak kopyalamak istediğiniz depo adresini belirtmemiz yeterlidir. Bu işlem, işbirliği yapmak veya bir proje üzerinde çalışmak için gerekli olabilir.

Push — Pull: Bu terimler versiyon kontrol sistemlerinde sıklıkla karşımıza çıkan terimlerdir. Local’ de ve remote’ da yapılan değişimlerin senkronizasyonu noktasında kullanılır. Push local/ yerelimize commit’ lediğimiz bir değişimi uzak sunucuya yani remote’ a yollamak anlamına gelir. Pull ise push’ lanmış, branch’ ler arası merge edilmiş değişimlerin tamamiyle sizin remote’ ınıza gelmesi indirilmesi yani kısaca projenin en son versiyonuna ulaşması diyebiliriz.

Conflict: Conflict yani çakışma, bir versiyon kontrol sistemi (VCS) kullanırken, aynı dosyanın farklı sürümlerinin farklı kişiler tarafından değiştirilmesi veya aynı kişi tarafından farklı zamanlarda yapılan değişikliklerin birleştirilmesi sırasında ortaya çıkan bir durumdur. Bu durumda VCS, aynı dosyanın farklı sürümlerinde yapılan değişiklikleri birleştirerek yeni bir sürüm oluşturmaya çalışır. Ancak, farklı sürümlerde yapılan değişiklikler çakışabilir ve birbirleriyle çelişebilir. Bu durumda, VCS bir conflict (çakışma) raporu oluşturur ve çakışmayı çözülmek üzere kullanıcıya bildirir.

Pull Request (PR): Bir versiyon kontrol sistemi kullanılarak yapılan bir değişikliğin ana projeye veya bir dalın üzerine entegre edilmesi için diğer geliştiricilerin onayını talep eden bir işlemdir. PR, değişikliklerin ayrıntılı açıklamalarını içerir ve diğer geliştiriciler tarafından incelemeye açık bir şekilde sunulur. Açık kaynak projelerinde PR, kod geliştirme sürecinde bir işbirliği aracı olarak kullanılır ve geliştiricilerin birbirlerinin işlerini incelemelerine, tartışmalarına ve birbirlerinin projelerine katkıda bulunmalarına olanak tanır. PR ayrıca, değişikliklerin bir proje dalında yapıldığı ve birleştirilmesi gerektiği durumlarda da kullanılır. Yani sizin yazmış olduğunuz koda gelebilecek her geri bildirim açmış olduğunuz PR üzerinden iletilebilir.

Bu haftalık yazımız bu kadardı bir sonraki teknik yazımızda muhtemelen sıklıkla kullandığımız Git komutlarına değineceğiz. Yazımı okumaya zaman ayırdığınız için teşekkürler.

Görüşmek üzere 👋…

--

--

Bircan Özmen

Yazılım & ürün yönetimi, Agile metodolojileri üzerine teknik yazılar yazıyor 🖊️ çeşitli konularda ise kişisel deneyimlerimi açıkça paylaşıyorum 🙋‍♀️.