İçeriğe atla

Git (yazılım)

Git
Git dahili Grafiksel kullanıcı arayüzü ekran görüntüsü.
Orijinal yazar(lar)Linus Torvalds [1]
Geliştirici(ler)Junio Hamano ve diğerleri[2]
İlk yayınlanma7 Nisan 2005
Güncel sürüm2.47.0[3] Bunu Vikiveri'de düzenleyin / 7 Ekim 2024
Geliştirme durumuAktif olarak devam ediyor
Programlama diliC, Tcl, Perl
PlatformÇapraz Platform
TürSürüm Kontrol Sistemi
LisansGNU Genel Kamu Lisansı v2
Resmî sitesigit-scm.com Bunu Vikiveri'de düzenleyin
Kod deposu Bunu Vikiveri'de düzenleyin

Git, yazılım geliştirme süreçlerinde kullanılan, hız odaklı, dağıtık çalışan bir sürüm kontrol ve kaynak kod yönetim sistemidir. İlk sürümü Linux çekirdeği'nin geliştirilmesinde kullanılmak üzere 2005 yılında bizzat Linus Torvalds tarafından tasarlanıp geliştirilmiş, 2021 yılı itibarıyla %73 pazar payına ulaşmıştır.[4]

Git sürüm kontrol sistemini kullanan her bir çalışma dizini (proje), internet erişimi ya da merkezi bir depo olmaksızın tüm tarihçeyi tutan ve sürüm kontrol sisteminin tamamını içinde barındıran tam yetkili birer depodur. Aynı çalışma dizininin birçok depodan birindeki kopyasında yapılan değişiklikler diğerlerine güven temelli bir değerlendirmeyle kabul edilir; Güvenilmeyenden değişiklik alınmaz, o kendi ayrı sürümünü geliştirmeye devam eder.

Git'in şu anki yazılım bakıcılığını, Junio Hamano üstlenmiş durumda. Git, GNU Genel Kamu Lisansı'nın 2. sürümüyle lisanslanmış bir özgür yazılımdır. 2.26.0 sürümünden itibaren Türkçe dil desteği sunmaktadır.

Tarihçe

Git'in ortaya çıkışı, çok sayıda Linux çekirdeği geliştiricisinin proje yönetimi için bir önceki sürüm kontrol sistemi olan BitKeeper'ı tercih etmesiyle başlamıştır. Andrew Tridgell, bir takım tersine-mühendislik yöntemleriyle BitKeeper protokolüne müdahalelerde bulunmuş ancak BitKeeper'ın telif haklarını elinde bulunduran Larry McVoy, BitKeeper'ın ücretsiz kullanımını reddederek konuyu hukuki platforma taşıyınca BitKeeper'ın kullanımından vazgeçilmiş, böylece Git'in temelleri atılmıştır.[5]

O günlerde Linus Torvalds, BitKeeper uygulamasında olduğu gibi dağıtık çalışan bir sürüm kontrol sistemi istiyordu ancak piyasadaki mevcut özgür çözümlerin hiçbiri özellikle performans konusunda Torvalds'ın beklentilerini karşılamıyordu. Torvalds bu konuyu piyasadaki mevcut sürüm kontrol sistemlerini ele alarak örneklemişti; bir yamanın uygulanarak ilgili tüm veri yapılarının güncellenmesinin 30 saniye sürmesi ve tüm bu değişikliklerin ilgili diğer geliştiricilere iletilebilmesi için aynı işlemin 250 defa tekrarlanmasının Linux çekirdeğinin geliştirilmesi yönünde engel teşkil ettiğinin altını çiziyordu. Torvalds'ın hedefi bu süreyi üç saniyeye düşürmekti.[6]

Bunun dışında Torvalds'ın başka tasarım kriterleri de vardı:[7][8]

  • Ne yapılmaması gerektiği konusunda CVS örneği ele alınmalı, şayet kararsız kalınırsa CVS'in sunduğu çözümün tam tersini yapmalı.
  • BitKeeper'a benzer, ağ üzerinde dağıtık çalışmaya izin veren bir iş akışını desteklemeli.
  • Zararlı kodlar veya yanlış kullanım nedeniyle veri kaybını önleyecek çok sıkı güvenlik yapıları bulunmalı.

Bu üç kriteri, Monotone dışında o gün piyasada var olan hiçbir sürüm kontrol sistemi yerine getiremiyordu, performans söz konusu olduğunda ise Monotone da eleniyordu. Böylece 2.6.12-rc2 sürümlü linux çekirdeğinin yayınlanmasının hemen ardından Torvalds, kendi sürüm kontrol sistemini yazmaya karar verdi.

Tasarım

Git tasarımında BitKeeper ve Monotone'dan esinlenilmiştir. Git, aslında Cogito veya StGIT gibi düşük seviyeli bir sürüm kontrol sistem motoru üzerine diğerleri tarafından arayüz yazılabilecek şekilde tasarlanmıştır. Ancak çekirdek git projesi doğrudan kullanılabilecek tam bir sürüm kontrol sistemi haline gelmiştir.

Kısaca Git kavramları ve işlemleri

Git, dağıtık bir sürüm kontrol sistemidir. Herhangi bir klasör, init veya clone komutları ile bir git repository yani bir git dosya deposu haline getirilebilir. Her git dosya deposunda .git isimli bir alt klasör vardır ve kullanıcının o depo klasörde ve onun alt klasörlerindeki dosyalarının güncel sürümlerinin ve gelişim sürecindeki tüm eski sürümlerinin yerel kopyaları .git klasöründe saklanır.

Depodaki kararlı gövde dosya kümesine master denir, bu kümeden geçici dal kümeler branch komutu ile oluşturulabilir. Kullanıcı, geliştirmek istediği kümeyi geri getirip (checkout), dosyalar üzerinde değişiklikler yapıp bunları o kümenin yeni bir sürümü şeklinde depolayarak çalışır (add ve peşinden commit). Üzerinde çalışılan kümeye head denir.

Git dosyalar arasında değişenleri (modified denenler), otomatik algılayabilir. Gitin takip ettiği dosyalar vardır (tracked), hala sürüm kontrolü altında olmayan başka dosyalar vardır (untracked). Dosyalar ekleme komutu add ile takibe alınabilir, mv ile klasörler arasında taşınabilir, rm ile silinebilirler. Bazı dosyaları git'in umursamaması gerekir, bunların adları .gitignore dosyasına yazılır. Dosyalar add ile depolanmaya hazır gruba eklenir (staged), commit ile o andaki halleri açıklama mesajı ekli bir şekilde depolanır, depolanmaya hazır olmayan degişiklikler save ve stash ile kenara konulup, daha sonra, belki başka kümede kullanılabilir (pop, drop, apply, clear), clean ile silinebiir. Klasörlerdeki metinler grep ile arattırılabilir.

Sürümler commit işlemi sırasında üretilmiş uzun hash sayısının ilk 6-7 rakamı ile tanınabilir. Dosyalardaki değişiklikler listelenebilir (status, log, reflog), görüntülenebilir (diff), vaz geçilebilir (undo), baştan alınabilir (reset), bir evvelki haline dönülebilir (revert), yazarı belirtilebilir (blame), her hangi bir dosyanın depodaki herhangi bir sürümü tekrar getirilebilir (checkout), belli kümelere isim verilebilir (tag).

Dağıtıklık gereği bu yerel depolar ve kümeleri arasında yerel commit işlemleri yüzünden farklar oluşur ve aynı depodaki kümeler arası eşitleme alış verişleri gerçekleştirilebilir (merge, rebase). Bu farklar bağımsız depolar arasında güven temelli teslimat olarak talep edilip veya sunulup kabul veya red edilebilirler ya da uzaktaki bir merkezi ana (origin) depodaki kümelerle güncelleme / senkronizasyon gerçekleştirilebilir (fetch, remote add, pull, pull-request, push) ya da oradan gelen yama uygulanabilir (am).

Git genellikle terminal konsolundan bu yukardaki komutlarla kullanılsa da, temelinde git komutları olan birçok daha kullanılışlı grafik arayüzü de bulunmaktadır. En bilinenleri şunlardır: masaüstü uygulaması olarak Sourcetree, IDE içinde menü seçeneği olarak Visual Studio, IntelliJ IDEA, intranet ve birer bulut tabanlı servis olarak Bitbucket, GitHub ve GitLab.

Kaynakça

  1. ^ "Initial revision of "git", the information manager from hell". GitHub. 8 Nisan 2005. 16 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Aralık 2015. 
  2. ^ "Commit Graph". GitHub. 8 Haziran 2016. 20 Ocak 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Aralık 2015. 
  3. ^ "[ANNOUNCE] Git v2.47.0". 7 Ekim 2024. Erişim tarihi: 8 Ekim 2024. 
  4. ^ "OpenHub Compare Repositories". 2021. 15 Ağustos 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Aralık 2021. 
  5. ^ "How Tridge reverse engineered BitKeeper (İngilizce)". 16 Ekim 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2013. 
  6. ^ "Linus Torvald'sın Kernel SCM saga başlıklı e-posta grubu tartışmasında yazdıkları (İngilizce)". 24 Aralık 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2013. 
  7. ^ "Linus Torvalds'ın Git e-posta grubuna veri kaybı konusunda yazdıkları (İngilizce)". 24 Aralık 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2013. 
  8. ^ "Linus Torvalds'ın Mayıs 2007 tarihli Google Tech Talk konuşması (İngilizce)". 23 Aralık 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2013. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Linux</span> Bir işletim sistemi çekirdeği

Linux ; Linux çekirdeğine dayalı, açık kaynak kodlu, Unix benzeri bir işletim sistemi ailesidir. GNU Genel Kamu Lisansı versiyon 2 ile sunulan ve Linux Vakfı çatısı altında geliştirilen bir özgür yazılım projesidir. Linux ismi ilk geliştiricisi olan Linus Torvalds tarafından 1991 yılında verilmiştir. Günümüzde süper bilgisayarlarda, akıllı cihazların ve internet altyapısında kullanılan cihazların işletim sistemlerinde yaygın olarak kullanılmaktadır. Bunlardan en popüler olanı Google tarafından geliştirilen Android işletim sistemidir.

<span class="mw-page-title-main">İşletim sistemi</span> bilgisayar donanım kaynaklarını yöneten yazılım

İşletim sistemi ya da işletim dizgesi, bir bilgisayarın donanım kaynaklarını yöneten ve uygulama yazılımlarına hizmet sağlayan yazılımların bir bütünüdür. İşletim sistemleri, bilgisayarın donanımı ile uygulama yazılımları arasında bir köprü görevi görerek kullanıcıların sistemle etkileşim kurmasını sağlar. Öne çıkan örnekler arasında Microsoft Windows, macOS, GNU/Linux dağıtımları, Android ve iOS yer alır.

<span class="mw-page-title-main">Unix</span>

UNIX türevi işletim sistemleri çok işlemcili çok pahalı makinelerden tek işlemcili, basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen esnek ve sağlamlığı çok değişik koşullarda test edilmiş sistemlerdir. Fakat özellikle kararlı yapısı ve çok kullanıcılı-çok görevli yapısıyla çok işlemcili sunucularda adeta standart haline gelmiştir ve özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur. UNIX, Interdata 7/32, VAX ve Motorola 68000 arasında hızla yayıldı.

<span class="mw-page-title-main">Linus Torvalds</span>

Linus Benedict Torvalds Finlandiya asıllı Amerikalı bir bilgisayar bilimci ve yazılım mühendisidir. Linux işletim sistemi çekirdeğinin geliştiricisi ve proje yöneticisi olup, ABD'de yaşamaktadır. Transmeta'daki görevinden ayrıldığından beri OSDL'de tam zamanlı olarak Linux çekirdeği üzerinde çalışmaktadır. Helsinki Üniversitesi'nde bilgisayar bilimleri bölümünden mezun olmuştur.

<span class="mw-page-title-main">Linux çekirdeği</span> çekirdek sürümü

Linux çekirdeği, Unix benzeri açık kaynak bir monolitik işletim sistemi çekirdeğidir. Linux işletim sistemleri ailesi bu çekirdek üzerine inşa edilmiştir. Kişisel bilgisayarlar ve sunucular gibi genellikle Linux dağıtımı kullanan geleneksel bilgisayar sistemleri; router, kablosuz erişim noktaları, set üstü kutuları, smart TV'ler gibi gömülü sistemler bu çekirdeği kullanır. Android işletim sistemine sahip olan tablet bilgisayarlar, akıllı telefonlar ve akıllı saatler de ayrıca bu çekirdeğin sağladığı hizmetlerden yararlanmaktadır. Kasım 2017 itibarıyla Dünya'nın en güçlü 500 süper bilgisayarı, Linux tabanlı işletim sistemi kullanmaktadır.

PTLsim, x86 işlemcilerinin iç yapısını taklit eden bir benzetimliktir. Intel x86 programlarının gerçek bir işlemcide nasıl çalışacağını denemek ve mikroişlemcinin iç yapısında yapılan değişikliklerin ne tür etkiler yaratacağını gözlemek amacıyla kullanılır.

emesene Ücretsiz bir MSN istemcisi

emesene, özgür ve ücretsiz bir MSN Messenger istemcisidir. GNU/Linux kullanıcılarının MSN Messenger kullanabilmesi için 2006 yılında geliştirilmeye başlanmışsa da zaman içinde Windows ve macOS sürümleri de çıkmıştır. MSN protokolünün yanı sıra XMPP (Jabber), Facebook, Google Talk servislerini de desteklemektedir.

<span class="mw-page-title-main">GitHub</span> sürüm kontrol sistemi olarak Git kullanan yazılım geliştirme projeleri için ağ tabanlı bir depolama servisi

GitHub, sürüm kontrol sistemi olarak Git kullanan yazılım geliştirme projeleri için web tabanlı bir depolama servisidir. 8 Şubat 2008 tarihinde Tom Preston-Werner, Chris Wanstrath, P. J. Hyett, Scott Chacon tarafından kuruldu. GitHub özel depolar için ücretli üyelik seçenekleri sunarken, açık kaynaklı projeler için ücretsizdir. Mayıs 2011 itibarıyla GitHub açık kaynaklı projeler tarafından tercih edilen en popüler depolama servisidir.

<span class="mw-page-title-main">GNU Projesi</span> Özgür yazılım projesi

GNU Tasarısı, toplu işbirliğini temel alan bir özgür yazılım tasarısıdır. Richard Stallman tarafından Massachusetts Teknoloji Enstitüsü'nde 27 Eylül 1983 tarihinde kamuoyuna duyurulmuştur. Tasarının hedefi işbirliği yoluyla özgür yazılımlar geliştirip dağıtarak bilgisayar kullanıcılarının bilgisayarlarını ve benzeri araçlarını kendi istekleri doğrultusunda özgürce kullanmalarını sağlamaktır. Bu tasarının temelinde kullanıcıların yazılımı çalıştırma, paylaşma, inceleme ve değiştirme konularında özgür olmaları yatar. GNU yazılımları bu özgürlükleri dağıtıldıkları lisans ile yasal olarak güvence altına alır, dolayısıyla GNU yazılımları özgür yazılımlardır.

<span class="mw-page-title-main">Cinnamon</span>

Cinnamon, GNOME 3'ten çatallanmış özgür ve açık kaynaklı bir masaüstü ortamı. Cinnamon, Linux Mint dağıtımının ana masaüstü ortamıdır ve diğer birçok Linux dağıtımı ve Unix benzeri işletim sistemlerinde isteğe bağlı olarak kullanılabilir. Cinnamon, Linux Mint geliştiricileri tarafından geliştirilmektedir.

<span class="mw-page-title-main">GNU C Library</span>

GNU C Library, bilinen adıyla glibc, GNU Tasarısı'nın C standart kütüphanesi uyarlamasıdır. Adına rağmen artık doğrudan C++ desteği bulunur. 1990'ların başında Özgür Yazılım Vakfı tarafından GNU işletim sistemi için geliştirilmeye başlanmıştır.

<span class="mw-page-title-main">Mac OS X Tiger</span> Mac OS Xin beşinci büyük sürümü

Mac OS X Tiger, Mac OS X'in, Mac bilgisayarlar için Apple'ın masaüstü ve sunucu işletim sisteminin beşinci büyük sürümüdür. Takma isim olarak yeni sürüme Kaplan ismi verilmiştir. Sürüm Apple Software Update yöntemi ile güncellenmekte. Tiger Mac OS X Pantherin halefi olarak 129.95 dolara 29 Nisan 2005 tarihinde kamuoyuna sunuldu. Yeni özelliklerden bazılarına 64-bit PowerMac G5 için geliştirilmiş destek, Spotlight adlı bir hızlı arama sistemi, Safari web tarayıcısının yeni bir sürümü dahildir.

<span class="mw-page-title-main">Google Fuchsia</span>

Fuchsia, şu anda Google tarafından geliştirilen açık kaynaklı bir işletim sistemidir. Proje, Ağustos 2016'da resmi bir duyuru yapılmaksızın kendi kendine barındırılan bir git şeklinde göründüğünde halk tarafından tanındı. Kaynak belgelerinde adın arkasındaki neden "Pembe + Mor == Fuşya " olarak tanımlanmaktadır. Linux çekirdeğini temel alan, daha önce Google tarafından geliştirilen Chrome OS ve Android gibi işletim sistemlerinin aksine, Fuchsia, mineral adını taşıyan Zircon adlı yeni bir mikro çekirdeğe dayanıyor.

youtube-dl, YouTube, Dailymotion ve Vimeo gibi akış web sitelerinden ses ve video dosyalarını ayıklamak için kullanılan bir komut satırı indirme yöneticisi programıdır. Yazılım Python kullanılarak yazılmıştır. youtube-dl, Lisanssız lisans kapsamında kamuya açık yazılımdır.

<span class="mw-page-title-main">TLDR Sayfaları</span>

TLDR Sayfaları, man sayfalarına kıyasla daha basit ve erişilebilir olma amacı güden, özgür ve açık kaynak kodlu kollaboratif yazılım belgelendirme projesidir. Proje, gönüllüler tarafından yazılan, komut satırı araçları ve diğer bilgisayar programları ile ilgili yardım dosyalarından oluşur. Bir sayfa, tldr komutu ile çağırılabilir. Projenin ismi, birçok kullanıcının çok uzun olduğunu söylediği man sayfalarına atıfta bulunan, "çok uzun; okunmadı" için bir kısaltma olan TL; DR kelimesinden gelir.

<span class="mw-page-title-main">Asahi Linux</span>

Asahi Linux, Apple silicon donanımlı Mac'lere Linux'u taşımayı ve onların macOS'tan farklı bir işletim sistemi çalıştırmasını amaçlayan bir projedir. Proje Hector Martin tarafından başlatıldı ve onun tarafından yönetilmektedir. Çalışmalar, Apple'ın 2022'de ilk alfa sürümüyle birlikte Apple silikona geçişi resmi olarak duyurmasından birkaç ay sonra, 2021'in başlarında başladı. Proje, Apple'ın tescilli donanım yazılımının belgelenmemesi nedeniyle zorlu hale getirildi.

<span class="mw-page-title-main">AppImage</span>

AppImage, uygulamayı yüklemek için superuser izinlerine ihtiyaç duymadan taşınabilir yazılımı Linux üzerinde dağıtmak için kullanılan bir biçimdir. Ayrıca "upstream paketleme" olarak da bilinen, uygulama geliştiricileri için Linux dağıtımından bağımsız ikili yazılım dağıtımına izin vermeye çalışır. İlk olarak 2004'te klik adı altında piyasaya sürüldü, sürekli geliştirildi, ardından 2011'de PortableLinuxApps ve daha sonra 2013'te AppImage olarak yeniden adlandırıldı.

<span class="mw-page-title-main">Void Linux</span>

Void Linux, sıfırdan tasarlanan ve uygulanan X Binary Package System (XBPS) paket yöneticisini ve "runit init" sistemini kullanan bağımsız bir Linux dağıtımıdır. İkili çekirdek blobları hariç, temel kurulum tamamen özgür yazılımdan oluşur ancak kullanıcılar özel yazılım yüklemek için özgür olmayan resmi bir depoya erişebilir.

<span class="mw-page-title-main">Redox (işletim sistemi)</span>

Redox, güvenlik, kararlılık ve performansa odaklanan Rust programlama dilinde yazılmış Unix benzeri bir mikro çekirdek işletim sistemidir. Redox güvenli, kullanılabilir ve özgür olmayı amaçlar. Redox, SeL4, MINIX, Plan 9 ve BSD gibi önceki çekirdeklerden ve işletim sistemlerinden esinlenmiştir. GNU ve BSD'ye benzer, ancak bellek açısından güvenli bir dilde yazılmıştır. MIT Lisansı altında dağıtılan ücretsiz ve açık kaynaklı bir yazılımdır.

<span class="mw-page-title-main">Windows Subsystem for Linux</span> Linux için Windows Alt Sistemi

Windows Subsystem for Linux (WSL), Windows 10, Windows 11, Windows Server 2019 ve Windows Server 2022 üzerinde yerel olarak Linux ikili yürütülebilir dosyalarını çalıştırmak için kullanılan uyumluluk katmanıdır.