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.
Git dahili Grafiksel kullanıcı arayüzü ekran görüntüsü. | |
Geliştirici(ler) | Linus Torvalds, |
---|---|
İlk yayınlanma | 7 Nisan 2005 |
Güncel sürüm | 2.45.2 / 31 Mayıs 2024 |
Geliştirme durumu | Aktif olarak devam ediyor |
Programlama dili | C, Tcl, Perl |
Platform | Çapraz Platform |
Tür | Sürüm Kontrol Sistemi |
Lisans | GNU Genel Kamu Lisansı v2 |
Resmî sitesi | http://git-scm.com/ |
Kod deposu |
|
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 'ı tercih etmesiyle başlamıştır. , bir takım tersine-mühendislik yöntemleriyle BitKeeper protokolüne müdahalelerde bulunmuş ancak BitKeeper'ın telif haklarını elinde bulunduran , 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.
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.
Bunun dışında Torvalds'ın başka tasarım kriterleri de vardı:
- 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, 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
- ^ "OpenHub Compare Repositories". 2021. 15 Ağustos 2021 tarihinde kaynağından . Erişim tarihi: 4 Aralık 2021.
- ^ "How Tridge reverse engineered BitKeeper (İngilizce)". 16 Ekim 2015 tarihinde kaynağından . Erişim tarihi: 1 Eylül 2013.
- ^ "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 . Erişim tarihi: 1 Eylül 2013.
- ^ "Linus Torvalds'ın Git e-posta grubuna veri kaybı konusunda yazdıkları (İngilizce)". 24 Aralık 2015 tarihinde kaynağından . Erişim tarihi: 1 Eylül 2013.
- ^ "Linus Torvalds'ın Mayıs 2007 tarihli Google Tech Talk konuşması (İngilizce)". 23 Aralık 2015 tarihinde kaynağından . Erişim tarihi: 1 Eylül 2013.
Dış bağlantılar
- GIT resmi web sitesi
- Github üzerinde orijinal kaynak kod yansısı
- GIT öğrenmek isteyenler için Github tarafından hazırlanmış eğitim sayfası (İngilizce)
- Linux ortamında Git kullanımı http://www.pythontr.com/makale/git-nasil-kullanilir-git-kullanimi-57 21 Aralık 2016 tarihinde Wayback Machine sitesinde . (Türkçe)
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Git yazilim gelistirme sureclerinde kullanilan hiz odakli dagitik calisan bir surum kontrol ve kaynak kod yonetim sistemidir Ilk surumu Linux cekirdegi nin gelistirilmesinde kullanilmak uzere 2005 yilinda bizzat Linus Torvalds tarafindan tasarlanip gelistirilmis 2021 yili itibariyla 73 pazar payina ulasmistir GitGit dahili Grafiksel kullanici arayuzu ekran goruntusu Gelistirici ler Linus Torvalds Ilk yayinlanma7 Nisan 2005Guncel surum2 45 2 31 Mayis 2024Gelistirme durumuAktif olarak devam ediyorProgramlama diliC Tcl PerlPlatformCapraz PlatformTurSurum Kontrol SistemiLisansGNU Genel Kamu Lisansi v2Resmi sitesihttp git scm com Kod deposugit kernel org pub scm git git git Git surum kontrol sistemini kullanan her bir calisma dizini proje internet erisimi ya da merkezi bir depo olmaksizin tum tarihceyi tutan ve surum kontrol sisteminin tamamini icinde barindiran tam yetkili birer depodur Ayni calisma dizininin bircok depodan birindeki kopyasinda yapilan degisiklikler digerlerine guven temelli bir degerlendirmeyle kabul edilir Guvenilmeyenden degisiklik alinmaz o kendi ayri surumunu gelistirmeye devam eder Git in su anki yazilim bakiciligini Junio Hamano ustlenmis durumda Git GNU Genel Kamu Lisansi nin 2 surumuyle lisanslanmis bir ozgur yazilimdir 2 26 0 surumunden itibaren Turkce dil destegi sunmaktadir TarihceGit in ortaya cikisi cok sayida Linux cekirdegi gelistiricisinin proje yonetimi icin bir onceki surum kontrol sistemi olan i tercih etmesiyle baslamistir bir takim tersine muhendislik yontemleriyle BitKeeper protokolune mudahalelerde bulunmus ancak BitKeeper in telif haklarini elinde bulunduran BitKeeper in ucretsiz kullanimini reddederek konuyu hukuki platforma tasiyinca BitKeeper in kullanimindan vazgecilmis boylece Git in temelleri atilmistir O gunlerde Linus Torvalds BitKeeper uygulamasinda oldugu gibi dagitik calisan bir surum kontrol sistemi istiyordu ancak piyasadaki mevcut ozgur cozumlerin hicbiri ozellikle performans konusunda Torvalds in beklentilerini karsilamiyordu Torvalds bu konuyu piyasadaki mevcut surum kontrol sistemlerini ele alarak orneklemisti bir yamanin uygulanarak ilgili tum veri yapilarinin guncellenmesinin 30 saniye surmesi ve tum bu degisikliklerin ilgili diger gelistiricilere iletilebilmesi icin ayni islemin 250 defa tekrarlanmasinin Linux cekirdeginin gelistirilmesi yonunde engel teskil ettiginin altini ciziyordu Torvalds in hedefi bu sureyi uc saniyeye dusurmekti Bunun disinda Torvalds in baska tasarim kriterleri de vardi Ne yapilmamasi gerektigi konusunda CVS ornegi ele alinmali sayet kararsiz kalinirsa CVS in sundugu cozumun tam tersini yapmali BitKeeper a benzer ag uzerinde dagitik calismaya izin veren bir is akisini desteklemeli Zararli kodlar veya yanlis kullanim nedeniyle veri kaybini onleyecek cok siki guvenlik yapilari bulunmali Bu uc kriteri disinda o gun piyasada var olan hicbir surum kontrol sistemi yerine getiremiyordu performans soz konusu oldugunda ise Monotone da eleniyordu Boylece 2 6 12 rc2 surumlu linux cekirdeginin yayinlanmasinin hemen ardindan Torvalds kendi surum kontrol sistemini yazmaya karar verdi TasarimGit tasariminda BitKeeper ve Monotone dan esinlenilmistir Git aslinda Cogito veya StGIT gibi dusuk seviyeli bir surum kontrol sistem motoru uzerine digerleri tarafindan arayuz yazilabilecek sekilde tasarlanmistir Ancak cekirdek git projesi dogrudan kullanilabilecek tam bir surum kontrol sistemi haline gelmistir Kisaca Git kavramlari ve islemleriGit dagitik bir surum kontrol sistemidir Herhangi bir klasor init veya clone komutlari ile bir git repository yani bir git dosya deposu haline getirilebilir Her git dosya deposunda git isimli bir alt klasor vardir ve kullanicinin o depo klasorde ve onun alt klasorlerindeki dosyalarinin guncel surumlerinin ve gelisim surecindeki tum eski surumlerinin yerel kopyalari git klasorunde saklanir Depodaki kararli govde dosya kumesine master denir bu kumeden gecici dal kumeler branch komutu ile olusturulabilir Kullanici gelistirmek istedigi kumeyi geri getirip checkout dosyalar uzerinde degisiklikler yapip bunlari o kumenin yeni bir surumu seklinde depolayarak calisir add ve pesinden commit Uzerinde calisilan kumeye head denir Git dosyalar arasinda degisenleri modified denenler otomatik algilayabilir Gitin takip ettigi dosyalar vardir tracked hala surum kontrolu altinda olmayan baska dosyalar vardir untracked Dosyalar ekleme komutu add ile takibe alinabilir mv ile klasorler arasinda tasinabilir rm ile silinebilirler Bazi dosyalari git in umursamamasi gerekir bunlarin adlari gitignore dosyasina yazilir Dosyalar add ile depolanmaya hazir gruba eklenir staged commit ile o andaki halleri aciklama mesaji ekli bir sekilde depolanir depolanmaya hazir olmayan degisiklikler save ve stash ile kenara konulup daha sonra belki baska kumede kullanilabilir pop drop apply clear clean ile silinebiir Klasorlerdeki metinler grep ile arattirilabilir Surumler commit islemi sirasinda uretilmis uzun hash sayisinin ilk 6 7 rakami ile taninabilir Dosyalardaki degisiklikler listelenebilir status log reflog goruntulenebilir diff vaz gecilebilir undo bastan alinabilir reset bir evvelki haline donulebilir revert yazari belirtilebilir blame her hangi bir dosyanin depodaki herhangi bir surumu tekrar getirilebilir checkout belli kumelere isim verilebilir tag Dagitiklik geregi bu yerel depolar ve kumeleri arasinda yerel commit islemleri yuzunden farklar olusur ve ayni depodaki kumeler arasi esitleme alis verisleri gerceklestirilebilir merge rebase Bu farklar bagimsiz depolar arasinda guven temelli teslimat olarak talep edilip veya sunulup kabul veya red edilebilirler ya da uzaktaki bir merkezi ana origin depodaki kumelerle guncelleme senkronizasyon gerceklestirilebilir fetch remote add pull pull request push ya da oradan gelen yama uygulanabilir am Git genellikle terminal konsolundan bu yukardaki komutlarla kullanilsa da temelinde git komutlari olan bircok daha kullanilisli grafik arayuzu de bulunmaktadir En bilinenleri sunlardir masaustu uygulamasi olarak Sourcetree IDE icinde menu secenegi olarak Visual Studio IntelliJ IDEA intranet ve birer bulut tabanli servis olarak Bitbucket GitHub ve GitLab Kaynakca OpenHub Compare Repositories 2021 15 Agustos 2021 tarihinde kaynagindan Erisim tarihi 4 Aralik 2021 How Tridge reverse engineered BitKeeper Ingilizce 16 Ekim 2015 tarihinde kaynagindan Erisim tarihi 1 Eylul 2013 Linus Torvald sin Kernel SCM saga baslikli e posta grubu tartismasinda yazdiklari Ingilizce 24 Aralik 2015 tarihinde kaynagindan Erisim tarihi 1 Eylul 2013 Linus Torvalds in Git e posta grubuna veri kaybi konusunda yazdiklari Ingilizce 24 Aralik 2015 tarihinde kaynagindan Erisim tarihi 1 Eylul 2013 Linus Torvalds in Mayis 2007 tarihli Google Tech Talk konusmasi Ingilizce 23 Aralik 2015 tarihinde kaynagindan Erisim tarihi 1 Eylul 2013 Dis baglantilarGIT resmi web sitesi Github uzerinde orijinal kaynak kod yansisi GIT ogrenmek isteyenler icin Github tarafindan hazirlanmis egitim sayfasi Ingilizce Linux ortaminda Git kullanimi http www pythontr com makale git nasil kullanilir git kullanimi 57 21 Aralik 2016 tarihinde Wayback Machine sitesinde Turkce