Git'e Giriş

Yayınlanan: 2022-06-30

Web siteleri oluşturmaya başladığımda, “kovboy kodlu” oldum, bu da genellikle dosyaları sunucuda canlı olarak düzenlediğim anlamına geliyor. Bunun korkunç bir fikir olduğunu anlamam sadece birkaç bozuk site aldı. Sonra bilgisayarımda yerel olarak siteler oluşturmaya başladım. Dosyayı FTP istemcimde yanlış konuma taşımak için birçok kez yerel bir dosyayı düzenledim. Bazen bu, umarım saklamış olduğum bazı yedek kopyaları araştırmadan düzeltemeyeceğim bir dosyanın üzerine yazacağım anlamına gelirdi.

Hala FTP ile uğraşıyorsanız ve dosyalarınızı geri alamıyorsanız, sürüm kontrolü için Git'i kullanmayı öğrenmenin zamanı geldi.

Sürüm Kontrolü nedir?

Sürüm kontrol sistemi (VCS), yazılım geliştiricilerin zaman içinde kodlarında yapılan değişiklikleri yönetmelerine yardımcı olan bir yazılım türüdür. İyi bir VCS sistemi, yapılan koddaki her değişikliği takip edecektir. Bu, bir şeyi bozarsanız, işler işe yarayana kadar “Geri Al” düğmesine basmaya çalışmadan kodun çalışan önceki bir sürümüne geri dönebileceğiniz anlamına gelir.

Bir ekip ortamında, bir VCS, farklı üyeler dosyaları güncellediğinde koddaki değişiklikleri birleştirmenize izin verecek araçlar vererek farklı üyelerle çalışmanıza yardımcı olur.

Git'te yaptığım şeylerden biri, oluşturduğum her özellik için yeni bir dal oluşturmak. Bu, bir dalda yaptığım değişiklikleri takip edebileceğim, ancak yine de ana şubeye geri dönerek sitenin mevcut durumuna geri dönebileceğim anlamına geliyor. Bu iş akışı hakkında daha sonra konuşacağız.

Git nedir?

Git bir sürüm kontrol sistemidir, ancak tek sistem değildir. Ana WordPress deposu SVN üzerinden çalıştırılır, ancak bir Git kopyası da bulabilirsiniz. Mercurial, Visual Source Safe, VESTA ve diğer birçok seçenek de vardır.

Tüm bu seçeneklere rağmen Git, hemen hemen herkesin kullandığı şeydir, bu yüzden bugün hakkında öğreneceğimiz sürüm kontrolü budur.

Temel Git Terimleri ve Komutları

Git'in nasıl kullanılacağının mekaniğine girmeden önce birkaç terimi anlamamız gerekiyor. Sadece düzenli olarak karşılaşacağınız terimleri ele alacağız.

Karşılaşabileceğiniz her şeyin daha eksiksiz bir listesi için buna bakın Git referansı veya bu Git komutlarının tam listesi .

Ekle : Kodunuzda değişiklik yaptığınızda, değişiklikleri taahhüt edebilmek için eklemek için git add komutunu kullanacaksınız.

Branch : Branch, deponuzun ana çalışma projesinden farklı olan bir versiyonudur. Tüm depolar bir ana dalla veya daha eski projelerde daha yaygın olarak bir ana dalla birlikte gelir. Son zamanlarda Git ve Github, master kelimesiyle ilgili tarihsel sorunlar nedeniyle varsayılan dal adını master'dan main'e değiştirmeye başladı. Git 2.28 ayrıca herhangi bir yeni proje için varsayılan şube adınızı ayarlamanıza da olanak tanır.

Checkout : Bir depodaki farklı dallar arasında geçiş yapmak için git checkout komutunu kullanırsınız. Bu komutu kullandığınızda Git, dosyaların içeriğini değiştirir veya dallar arasında farklılık gösteren dosyaları ekleyip kaldırır.

Clone : git clone komutu, kaynak havuzdan bir havuzun bir kopyasını oluşturmak için kullanılır. Bu komutu, kod üzerinde çalışabilmeniz için uzak bir havuzun yerel bir kopyasını almak için kullanırsınız.

Commit : git add kullandıktan sonra, dosyalarınızın durumunu git'e kaydedebilmek için git commit kullanmanız gerekir.

init : git init , Git'in çalışması için gereken tüm temel dosyalarla sizin için boş bir havuz oluşturur.

Birleştirme : Bir dalda değişiklik yaptıktan ve bunları ekledikten ve taahhüt ettikten sonra, bu değişiklikleri diğer dallara taşımak için git merge komutunu kullanırsınız.

Origin : Bu, havuzun birincil sürümünün varsayılan adıdır. Ben genellikle benimkini Origin'den daha açıklayıcı olacak şekilde değiştiririm. Github ile çalışıyorsam, Git'teki ayarları, Origin github olacak şekilde değiştiririm. Bu, kafamda her şeyi net tutmama yardımcı oluyor.

Push : Uzak şubeyi, havuzun yerel versiyonunda yapılan taahhütlerle günceller.

Depo : Buna “Repo” da denebilir ve tüm dosyaların bir dizini ve bu dosyalardaki değişikliklerin Git geçmişidir.

Durum : git status , çalışan deponuzun mevcut durumunu gösterir.

.gitignore : Bu, Git'in izleme zahmetine girmeyeceği dosya kalıplarını içeren gizli bir dosyadır. .gitignore dosyalarınızda .DS_Store varsa, macOS'un genellikle klasörlerin içine koyduğu tüm sinir bozucu dosyaları yok sayar.

Git Depolarını Barındırma

Dalıştan önce anlamanız gereken diğer bir şey de, deponuz için uzak bir konuma ihtiyacınız olmasa da, buna sahip olmamanın Git kullanmanın bazı faydalarını azaltacağıdır. Başka bir yerde barındırılan uzak bir havuz olmadan, bilgisayarınız ölürse veya çalınırsa kodunuzun yedeğine sahip olmazsınız.

Github ve Bitbucket, Git depolarınızı barındırmak için en popüler yerlerden ikisidir, çünkü bunlar çoğunlukla ücretsizdir ve özel depolarınız olabilir. Bu, kodunuzun başka birinin sunucusunda olduğu anlamına gelir, bu nedenle bu fikri beğenmediyseniz, depoları barındırmak için sunucunuzda Gitlab'ı kullanabilirsiniz.

Git'i Yükleme

macOS'te git'i kurmanın en basit yolu, Terminal'i açıp git'i yüklemek için sizden Xcode Komut Satırı araçlarını indirmenizi isteyecek olan git yazmaktır. Bu bittiğinde, sahip olduğunuz git sürümünü görmek için git –version komutunu çalıştırabilirsiniz. Bu işe yaramazsa, git'i macOS'e yüklemenin birkaç yolu daha vardır.

Windows kullanıcıları için Git'i resmi Git yükleyicisiyle yükleyebilirsiniz. Git ayrıca daha sonra bahsedeceğimiz Github Desktop uygulamasıyla birlikte gelir.

Linux kullanıyorsanız git, paket yöneticinizle birlikte paketlenmiş olmalıdır veya git'i Linux'a kurmak için bu yollara bakabilirsiniz.

Git Varsayılanlarını Yapılandırma

Git'i yükledikten sonra, her bir işlemin adınızı, e-postanızı ve taahhüt mesajlarınızı, taahhütle ilgili yorumları girmek için tercih ettiğiniz düzenleyiciyi kullanmak üzere kullanacak şekilde yapılandırmanız gerekir. Bunları Terminal uygulaması aracılığıyla macOS'ta ayarlamanın yoluna bakacağız.

git config --global user.name "Your Name" , bilgisayarınızda yapılan her işlemde kullanılacak adı belirleyecektir.

git config --global user.email "[email protected]" , yaptığınız her taahhütle ilişkili e-posta adresini ayarlar.

git config --global core.editor vim , Git vim için varsayılan düzenleyiciyi yapacaktır. Vim'i sevsem de, herkesin sevdiği editör değil. Atom kullanıyorsanız, Sublime Text için git config –global core.editor “atom –wait” veya git config –global core.editor “subl -n -w” kullanırsınız.

IDE ile ilgileniyorsanız, Visual Studio Code , PHPStorm gibi isterseniz doğrudan uygulama içinden Git ile çalışmanıza da izin verir .

Depo Oluşturma

Git'i yüklediğimize ve yapılandırdığımıza göre, şimdi temel bir depoya başlayalım. Terminalinizi açın ve mkdir test-repository yazarak test-repository adında bir klasör oluşturun. Ardından, test deposu dizininize geçmek için cd test-repository yazın ve git init yazın.

Bu noktada, klasörünüzde .git adında bir gizli diziniz olacak. Gizli bir dosya olduğundan, gizli dosyaları listelemek için Terminal'de ls -a yazmanız gerekir.

git add kullanma

Şimdi Terminal'e touch test.txt yazarak bir dosya oluşturalım. Ardından, eklediğiniz dosyayı görmek için git status yazın.

Gördüğünüz gibi oluşturduğumuz yeni dosya kırmızı renkte çıkıyor ve durumunun izlenmediğini söylüyor. Bu, Git'in dosyayı gördüğü, ancak hiçbir kaydının olmadığı anlamına gelir.

Git'e bu dosyayı hazırlamasını söylemek için git add test.txt yazın, ardından git status yazın ve Git size değiştirilmiş bir dosyadan haberdar olduğunu söylemelidir.

Dosyaları Git'e Ayırma

Artık dosyamızı eklediğimize göre, Git'in dosyanın durumunu kaydetmesi için onu işlememiz gerekiyor. Aşağıdaki komutla varsayılan düzenleyicimizi açmadan bunu tek satırda yapabiliriz.

git commit -m 'adding our first file'

-m bayrağı git'e tek tırnak içindeki kelimelerin komutla birlikte gelen yorum olduğunu söyler.

Artık depomuzun içinde durumu kaydedilmiş tek bir dosya var.

Şube Oluştur

Git'in gerçek gücü, dallanmaya başladığınızda gelir. Diyelim ki test.txt dosyanıza bir demet yazmak istiyorsunuz, ancak onu elinde tutup tutmayacağınızdan emin değilsiniz ve şu anda boş dosyaya geri dönebileceğinizden emin olmak istiyorsunuz. Bunu bir şube ile yapabiliriz.

Bir dal oluşturmak için git checkout -b new-branch yazabiliriz. Bu, şubeyi kontrol ederken aynı zamanda bir şube oluşturmak için bir kısayol ve her şube oluşturmam gerektiğinde kullandığım şey.

Şimdi test.txt dosyamızı açın, ona biraz metin ekleyin ve kaydedin. Ardından, dosyanın durumunu kaydetmek için yukarıdaki gibi git add ve git commit kullanın.

Ardından, varsayılan ana şubeye geri dönmek için git checkout master yazın ve ardından test.txt dosyanızın içeriğine tekrar bakın. Yazdığınız tüm metnin kaldırıldığını fark edeceksiniz. Git, yalnızca bir dalda bulunan yeni bir dosyayı bile siler, ancak kaybolmaması için kaydını tutar.

Şube Birleştirme

Şimdi dosyamıza ne yazdıysak onu seviyoruz, o yüzden ana dalımızla bütünleştirelim. Ana dalda olduğunuzdan emin olun ve değişikliklerinizi entegre etmek için git merge new-branch yazın.

Şimdi test.txt içeriğine bakarsanız, değişikliklerinizi bıraktığınız gibi ana dalda bulacaksınız.

Git'i WordPress ile Kullanma

Yukarıdaki örnek son derece basit olsa da, projelerinizde Git'i kullanmaya başlamak için ihtiyacınız olan tek şey bu. O halde Git'i kullanarak bir WordPress projesini tam olarak nasıl alacağınızdan bahsedelim.

İlk düşünce, klasör hiyerarşinizdeki hangi seviyenin Git deponuzun kökü olması gerektiğidir. Bir tema oluşturuyorsanız, tema klasörünü deponuz yapabilirsiniz. Bir eklenti oluşturuyorsanız aynı mantık geçerlidir.

Genelde aynı anda temalar ve eklentiler üzerinde çalışıyorum, bu yüzden genellikle wp-content klasörünü havuzumun konumu olarak kullanıyorum. Bunu yaptığımda, tüm resimleri ve yüklenen dosyaları depoya eklememek için yüklenenler klasörünü göz ardı ettiğimden emin oluyorum. Depoyu karıştırırlar ve Git'i yavaşlatabilirler çünkü görüntü dosyalarını sıkıştırmada pek iyi değildir.

Tüm bir dağıtım iş akışını yönetiyorsam, o zaman kök WordPress klasörünü Git depomun ana konumu yaparım. Sonra .gitignore wp-content/uploads ve wp-config.php eklediğimden emin oluyorum. wp-config.php , her WordPress kurulumuna özeldir, bu yüzden sitenin çalışmayı durdurmasına neden olacak dosyanın başka herhangi bir sürümüne dağıtılmasını istemiyorum.

Her proje için başlangıç ​​noktası olarak kullandığım .gitignore dosyasının bir kopyasını görebilirsiniz. Git deponuzun kökü olarak wp-content kullandığınızı varsayar, bu yüzden WordPress'in kökündeysem bazı yok sayma kalıplarını değiştiririm.

Git GUI Uygulamaları

Git'in komut satırı aracılığıyla temel konuları ele almış olsak da, herkes komut satırında rahat değil, Git'i kullanmaya başladığımda değildim biliyorum. Şimdi bile, kurulumumda herhangi bir değişiklik yapmadan önce zaman zaman Git'in ne yaptığının görsel bir temsiline bakmak istiyorum.

Neyse ki Git için kullanabileceğiniz birkaç harika GUI istemcisi var, o yüzden birkaçını vurgulayalım.

Github Masaüstü (Windows/macOS)

Git GUI istemcilerine bakarken başlamak için harika bir nokta Github Desktop uygulamasıdır.

Birçok açık kaynaklı proje, işbirliği için kod deposu olarak Github'ı kullanır ve işlerini yapmak için standart Github akışını kullanır. Github Desktop istemcisi, bu akışı yönetmenize yardımcı olmak için oluşturulmuştur, böylece çekme istekleri oluşturmayı daha kolay hale getirecektir.

Bir çekme isteğinin ne olduğundan emin değilseniz, kontrol edin Github'ın çekme istekleriyle ilgili belgeleri

Ne yazık ki Linux kullanıcıları için resmi bir Github Desktop uygulaması yok, ancak Linux sistemlerine kurulacak bir Github Desktop çatalı var.

Git Kulesi (Windows/macOS)

Kullandığım Git GUI Git Tower. Git Tower, macOS ve Windows için kullanılabilir. Git'i kullanmaya başladığımda, çakışmaları çözmenin ve bu GUI'deki dosyalar arasında nelerin farklı olduğunu görmenin çok daha kolay olduğunu gördüm.

Çalışan Kopya (iOS/ıpados)

Benim gibi esas olarak bir iPad'den çalışıyorsanız, Çalışma Kopyası'na bakmalısınız. Working Copy, iOS ve iPadOS ile çalışan tam özellikli bir Git istemcisidir. Git iş akışınızın bölümlerini otomatikleştirebilmeniz için Kısayol entegrasyonuna bile sahiptir.

Toplama

Bugün Git bilginizde çok fazla yol katetmiş olsak da, tek bir blog gönderisinin konuyla ilgili ayrıntılı olması mümkün değildir. Bu mükemmel kaynakların yanı sıra Nexcess yardım belgeleriyle öğreniminize devam edebilirsiniz.

  • Git Belgeleri
  • Pro Git Kitabı
  • Laracasts Git Dersi
  • Git'in kendi dış kaynakları

Müşteri projelerinizi yönetmek için Git'i kullanarak, yaptığınız işi artık istemiyorsanız değişiklikleri geri alabileceğiniz veya tüm şubeleri atabileceğiniz için baş ağrılarından kurtulacaksınız. Yeterince geri döndüğünüzü düşünene kadar Ctrl + Z yok, Git sizin için hepsini takip edecek.