Git

Git, bir yazılımda yapılan her değişikliği kimin neden yaptığıyla birlikte kaydeden ve böylece herhangi bir değişikliği geri almanızı sağlayan sistemdir.

  • Bulut ve DevOps

Şu adla da bilinir sürüm kontrolü kaynak kod yönetimi commit geçmişi

Tanım

Git, bir yazılımda yapılan her değişikliğin kaydını, kimin ne zaman ve neden yaptığıyla birlikte tutar. Kaydedilen her değişikliğe commit denir ve hiçbir şey atılmadığı için bunlardan herhangi biri geri alınabilir. Fikrin tamamı budur, aynı zamanda birkaç kişinin aynı ürün üzerinde aynı anda, birbirinin işini silmeden çalışabilmesinin de nedenidir.

Bu geçmiş var olduğu için kötü bir yayın felaket olmaktan çıkar. Dün gecenin yedeğini geri yükleyip bugünün siparişlerini kaybetmek yerine ekip kodu son sağlam commit'e döndürür ve bu genelde bir dakikadan kısa sürer. GitHub ile GitLab ise Git'in üzerine kurulmuş sitelerdir, yani ortak kopyayı tutar ve çevresindeki tartışmayı eklerler. Biri bir değişiklik önerir, bir başkası da müşteriye ulaşmadan önce onu okuyup yorum yazar. Bu yüzden bir müşteri Linkysoft'a bir fiyat kuralını kimin ne zaman değiştirdiğini sorduğunda cevap birinin hafızasından değil, bu kayıttan çıkar.

İnsanları en çok şaşırtan şey, Git'in aslında unutmamasıdır. Bir parola ya da ödeme anahtarı geçmişe bir kez kaydedildiyse, ertesi gün satırı silmek onu ortadan kaldırmaz. Eski sürüm kayıtta kalır ve projenin bir kopyasına sahip olan herkes onu okuyabilir. Bu nedenle tek dürüst çözüm, parolanın kendisini değiştirip sonra geçmişi temizlemektir. Bir güvenlik incelemesinde ilk baktığımız şeylerden biri budur ve kimsenin isteyeceğinden daha sık karşımıza çıkar.

Bilinmesi gereken iki şey daha var, ilki Git'in bir yedek olmadığıdır. Kodun geçmişini tutar ama müşterilerinizin siparişlerini ya da dosyalarını tutmaz, dolayısıyla onların başka bir yerde kendi kopyası olmalıdır. İkincisi ise geçmişin değerinin, insanların her değişikliğin yanına yazdığı notlarda saklı olmasıdır. Altı ay sonra “düzeltildi” diyen bir not kimseye bir şey anlatmazken, “iki para birimli siparişlerde fatura toplamının aşağı yuvarlanması durduruldu” notu bir öğleden sonrayı kurtarır.

Bir de erken sorulması gereken bir soru var, herkes iyi geçinirken: kodu tutan hesap kimin adına? Şirketler bunu en kötü anda öğrenir, çünkü bir geliştirici ayrılır ve geçmiş de onunla birlikte gider. Bu yüzden Linkysoft'un yürüttüğü her proje ilk günden itibaren, müşterinin sahibi olduğu bir hesapta Git'te durur; yarım devraldığımız işler de buna dâhildir. Tek bir geçmişin hem bir web uygulamasını hem de aynı sistemin içine kurulan mobil uygulamayı kapsaması da böyle olur. Fiyat kuralındaki tek bir değişiklik ikisine birden ulaşır ve hangi gün geldiğini gösterebiliriz.

Git hakkında sorular

Git ile GitHub aynı şey mi?
Hayır. Git, işin yapıldığı bilgisayarlarda çalışan kayıt sistemidir. GitHub ise bu kaydın ortak bir kopyasını saklayan, inceleme ve tartışma ekleyen bir sitedir. GitLab ve Bitbucket da aynı işi görür.
Git sildiğimiz bir dosyayı geri getirebilir mi?
Evet, dosya geçmişe en az bir kez kaydedildiyse. Herhangi bir sürümünü geri alabilir, kimin sildiğini görebilir ve o sırada bıraktığı notu okuyabilirsiniz.
Git sistemimin yedeği midir?
Hayır. Kodun geçmişini tutar, verinizi değil. Siparişler, yüklenen dosyalar ve veritabanı kendi yedeğine ihtiyaç duyar; düzenli aralıklarla ve ayrı bir yerde saklanmalıdır. Bu ayrı bir düzendir ve kontrol edilmelidir.
Geliştirici ayrılırsa kodumuza ne olur?
Bu tamamen hesabın kimin adına olduğuna bağlıdır. Şimdi sorun, ilişki iyiyken. Hesap şirkete ait olmalı ve şirket içinden en az bir kişinin tam erişimi bulunmalıdır.
Biri kodun içine parola kaydetti. Silmek yeterli mi?
Hayır. Eski sürüm geçmişte kalır ve projenin kopyası olan herkes okuyabilir. Önce parolanın kendisini değiştirin, sonra geçmişi temizleyin. Tersini yapmak kapıyı açık bırakır.

Bunun projenize nasıl uyduğundan hâlâ emin değil misiniz?

Ne inşa ettiğinizi bize anlatın, size sade bir dille yanıt verelim.