Git Kullanmaya Başlayalım

Berkcan Tezcaner
8 min readJul 26, 2019

--

Git en basit tanımıyla bir dosyadaki (yaygın olarak kaynak kodlarında kullanılır) değişiklikleri izleme sistemidir (Versiyon Kontrol Sistemi/VCS). Versiyon kontrol sistemleri arasında en popüleridir. Linux’un yaratıcısı olan Linus Torvalds tarafından 2005 yılında Linux kerneli üzerinde başka noktalardaki developerların birlikte çalışabilmesi düşüncesiyle ortaya çıkmıştır. Ayrıca dosyaların tarihini (eski versiyonlarını) tutmaya yarar.

Kaynak

Versiyon kontrol sistemleri ikiye ayrılır

- Merkezi versiyon kontrol sistemi (CVCS)
- Dağıtılmış versiyon kontrol sistemi (DVCS)

Bizim kullanacağımz versiyon kontrol sistemi git dağıtılmış versiyon kontrol sistemi kategorisindedir.

Git hem konsol üzerinden hem de konsola bulaşmadan kullanmamızı sağlayan GUI programlar aracılığıyla kullanılabilir.Hatta bazı IDE ve Text-Editorlerle entegre gelir. Bu yazımda konsol arayüzünde git’i kullanmayı öğreneceğiz. İlerleyen başka bir yazı da GUI Programlara bakacağız.

Git’i Edinmek

Linux

Linux üzerinde terminalden dağıtımınıza göre direkt olarak repolardan kurabilirsiniz.

>>Debian Tabanlı (Ubuntu vb.)<<
sudo apt-get install git-all
>>Arch Linux Tabanlı (Manjaro vb.)<<
sudo pacman -S git-all
>>RPM Tabanlı (Fedora vb.)<<
sudo yum install git-all
>veya (danified yum ile)<
sudo dnf install git-all
>>Yüklemeyi Kontrol Etme<<
git --version
>>Yüklenme başarılı olduysa aşağıdakine benzer bir çıktı vermeli<<
git version X.X.X

Windows

Windows üzerinde Git’i edinmek için birkaç seçeneğiniz bulunuyor. Github Desktop Client’i kurarsanız GUI’nin yanında bir de command-line versiyonu yüklenmiş oluyor. Ya da direkt olarak sadece Git yükleyebilirsiniz. Bunlara alternatif olarak ise Windows için gayri-resmi bir paket yöneticisi olan Chocolatey ile giti edinebilirsiniz.

Kurulum esnasında pek elleşmeniz gerekmemekle birlikte text editor ve Path ayarlarını zevkinize, ihtiyacınıza göre kişiselleştirebilirsiniz. Vim ve Git from the command line and also from 3rd-party software seçmenizi öneririm.

Hem Git’in yüklediği terminal emülatöründe, hem de Powershell/CMD ile birlikte dilediğiniz gibi kullanabilirsiniz

macOS

macOS üzerinde terminalinizde

 git --version
mac sahibi olmadığımdan youtube üzerinde örnek bir videodan ekran görüntüsü :)

komutunu çalıştırarak yüklü olup olmadığını kontrol edebilirsiniz. Yüklü olmadığı taktirde sizi kuruluma yönlendirecektir. Alternatif olarak resmi Git sitesinden kurulum yapabilirsiniz. Ya da Github Desktop Client’i kurarken yanında gelen command-line git’i de edinebilirsiniz.

GUI Araçlar

İşinizi kolaylaştırabilecek bazı grafik arayüzlü araç seçeneklerinize git’in resmi sitesinde göz atabilirsiniz. Başka yazılarda bir kaçını kullanmayı öğreneceğiz.

GUI Clients (solda) | Resmi Kurulumla Birlikte Gelen Git Gui Programı (sağda)
Git’in çalışma mantığı

İlk Çalıştırma

Projenizinin olduğu klasörde terminal ekranını açarak (ve ya sağ klik Git Bash Here) (Ayrıca DOS veya Linux için bildiğiniz directory gezinme komutlarıyla adrese gidebilirsiniz)

git init

yazarak git’i projemize entegre etmenin ilk adımını atmış oluruz.

Görüldüğü üzere projemizde oluşan .git klasörü

Git ile yaptığımız her versiyon kontrol işlemi .git klasöründe tutulur. Projenizi takip etmeyi bırakmak isterseniz .git klasörünü silmeniz yeterlidir.

Kullanmak istediğiniz herhangi bir komutla ilgili yardım almak isterseniz aşağıdaki komutları kullanabilirsiniz.

git help <komut>
>>veya<<
git <komut> --help

Kullanıcı bilgilerini ayarlama

>>Kullanıcı İsmi<<
git config --global user.name 'Berkcan Tezcaner'
>>E-Posta<<
git config --global user.email 'dev@berkctezc.com'
>>Daha Önce Girilmiş Bilgilere Gözatmak<<
git config --list
>>Default Git Text-Editör<<
git config --global core.editor "emacs"
------>>Tüm kullanıcı ve projeler için geçerli ayar<<
git config --system .....
>>Sadece sizin kullanıcı profiliniz için geçerli ayar<<
git config --global .....
git push --all originDosyaları Ekleme>>Bu directorydeki dosyaları listeleyelim
>Windows<

dir
>Bash(Linux/macOS)<
ls
>>Kaynak kodumuzu ekleyelim<<
git add uygulamam.py
>>Bu komut çalışsa bile konsola bir çıktı vermeyecektir<<
>>Bilgi almak için aşağıdaki komutu kullanalım<<
git status
commit bekleyen değişiklikler ve takip edilmeyen dosyalar hakkında bilgi veriyor
>>Dizindeki tüm dosyaları yükleme<<
git add .
>veya<
git add -A
>>Sadece belli formattaki dosyaları yükleme<<
git add *.php

Dosyada değişiklik yapalım sonrasında git status çalıştıralım

modified şeklinde belirtiyor

bu durumda yeniden add deyip ekliyoruz.

Dosyaları kaldırma

git rm --cached uygulamam.py
>veya
git reset uygulamam.py

Commit

Commit projemizin o anki snapshot’unu almaya yarar. Bir nevi Skyrimde zor bir göreve gitmeden veya bir bug oluştuğunda geriye almak için save oluşturmak gibi düşünülebilir.

git commit

Kurulumda hangi editörü seçtiğinize bağlı olarak böyle bir dosyayla karşılaşacaksınız. Vim’i seçtiyseniz klavyenizde “i” tuşuna basarak insert moda geçebilirsiniz.

Initial commitin başındaki “#” işaretini silelim, ESC ile insert moddan çıkalım, konsola “:wq” komutunu girip kaydedelim. Başında ‘#’ olmayan satır yorum olarak kullanılır

git status ile baktığımda commit edilecek birşey olmadığını bildiriyor

Dosyamızda değişiklik yapalım

>>her seferinde dosya düzenlemeyle uğraşmamak için bu komutu kullanabilirsiniz<<
git commit -m 'comment'
>>son commitin commentini düzenlemek için<<
git commit -amend -m 'doğru comment'

Commitler arasında geçiş yapmak için de checkout kullanabiliriz

git checkout 'commit kodu'
en güncel commite geri dönmek için de “git checkout master” dememiz yeterlidir

Git Ignore

Takip edilmesini / commit edilmesini istemediğimiz dosyaları, dizinleri ve dosya formatlarını buraya gireriz.

>>Git Ignore dosyasını yaratma<<
>Bash(Linux/macOS)<
touch .gitignore
>Windows<
echo >.gitignore

.gitignore dosyamızda örneğin:
“log.txt” yazarak kök dizinindeki belli bir dosyayı,
“*.exe” yazarak belli bir dosya formatını,
/release” yazarak belli bir dizini,
“/documentation/*.pdf” yazarak belli bir dizindeki belli bir dosya formatının görmezden gelinmesini sağlayabiliyoruz… Projenizin ihtiyaçlarına göre daha fazlasına bitbucket’ın dökümantasyonundan göz atmanızı öneririm

Branch

Birbirinden bağımsız geliştirilebilen kod parçaları için kullanılır. Örneğin bir takım giriş yapma branchi bir takım gui branchi şeklinde ayırabilir. Çalışır haldeki uygulamamızın fonksiyonelliğini bozmadan halihazırdaki bir fonksiyon üzerinde değişiklik yapmak için kullanılabilir. Çalışmamız bittiğinde ise merge ederiz.

>>Yeni bir branch oluşturalım<<
git branch newbranch
>>Oluşturduğumuz branche geçiş yapalım<<
git checkout newbranch
>>Oluşturduğumuz branche dosya ekleyelim<<
git add .
>>Commit edelim<<
git commit -m
>>Master branche geri dönelim<<
git checkout master
>>Oluşturduğumuz branchleri listelemek için<<
git branch
>>Birden fazla branchi pushlamak istersek<<
git push --all origin

Dikkat ederseniz master branche dönüş yaptığımızda gui branchinde eklediğimiz dosyalar yok oldu. Aslında sadece .git klasöründe bir yerlere gizlendiler branchler arası geçiş veya merge yaptığımızda geri erişim sağlayabiliriz.

Stash

Bir dosyada yaptığımız değişikliği commit etmek istemiyorsak fakat içeriğini de kaybetmemek için bir yerlerde saklamak istiyorsak stash komutunu kullanabiliriz.

>>Stasus ekranında görünen değişikliklerin stashe atmak istediklerimiz değişiklikler olduklarından emin olalım<<
git status
>>Stash'e atmak için aşağıdaki komutu kullanalım<<
git stash
>>Stashlerimizin listesini görmek için<<
git stash list
>>Stashteki değişikliği restore etmek için<<
git stash pop
>>Stashteki değişikliği restore eder fakat stashi tutmaya devam eder<<
git stash apply 'stash@{stashno}'
>>Stashteki değişikliği silmek istersek<<
git stash drop 'stash@{stashno}'

Merge

Branchte yapılacaklar tamamlanıp ana projeyle birleştirilmek istendiğinde ise merge edebiliriz.

git merge newbranch

Merge işlemi bittikten sonra oluşturduğumuz branchi aşağıdaki şekilde silebiliriz

git branch -d newbranch
git branch -a
git push origin --delete newbranch

Diff

Bir önceki committen farklarını görmek için kullanabileceğimiz bir komut

git diff

Alias

Sık olarak kullandığımız komutlara kısa adlar vererek iş akışımızı hızlandırmaya yarayan bir komut.

git config --global alias.<aliasismi> "herhangi bir komut dizisi"#eğer global olarak kaydettiysek home directoryde .gitconfig içinde bütün aliaslari bulabiliriz. lokal olarak kaydettiyseniz de .git klasörü içinde config dosyasında bulabilirsiniz.

Şimdilik projemizin git konfigürasyonu bittiğine göre şimdi public bir repoya yükleme yapmayı öğrenelim.

Bu rehberde kullanmayı öğreneceğimiz public repolar;

github, bitbucket, gitlab

Github

Sağ üstten New repository diyelim
>>github üzerinde yarattığımız repomuza projemizi push edelim<<
git remote add origin https://github.com/username/repo-name.git
git push -u origin master
>>remotelarımızı kontrol edelim<<
git remote
Login yapmamız için bir pencere çıkacaktır

remote repo olarak githubdaki repomuza bağladığımızdan dolayı bundan sonra sadece “git push” yazarak gönderebiliriz.

Bitbucket

Giriş yaptıktan sonra Your work sekmesine girelim
Create a new repository deyip projenize göre bilgileri girin

Şimdi karşımıza çıkan sayfanın alt kısmında bulunan Get your local Git repository on Bitbucket altında bulunan şekilde bitbucket repomuzu remote olarak ekleyelim.

git remote add origin https://kullanici@bitbucket.org/kullanici/repo-name.gitgit push -u origin master

(Not: Eğer birden çok repoya yüklemeye çalışıyorsanız origin yerine başka bir isim yazmanız gerekmekte. veya git remote rename origin yeni-isim şeklinde yeni bir isim verebilirsiniz)

Gitlab

Header kısmında bulunan + tuşundan new project diyelim

Projemize göre ayarlamaları yaptıktan sonra, Push an existing Git repository altındaki yönergeyi takip edelim.

git remote add origin https://gitlab.com/user/repo-name.gitgit push -u origin

Uzak Repo İşlemleri

Clone

Projenin sağ üstünde bulunan bu linki kopyalayalım

git clone <link>

Pull

Eğer başka bir kullanıcı tarafından değişiklik yapıldıysa son değişiklikleri çekmek için. Çekerken merge işlemini de yapar.

git pull

Fetch

pull’a benzer fakat farkı merge yapmamasıdır.

git fetch

Yararlı Küçük Bilgiler

  • Git Bash üzerinde belli bi komutun tamamını yazmadan iki kere tab’a basarsanız yarım kalan komutun devamını tamamlayacaktır. Eğer birden fazla komutun ortak başlangıcı ise o komutları listeleyecektir.
  • Bazı bash komutları
pwd     -> bulunduğumuz directory.
cd -> yazdığımız directorye gitmemizi sağlar. "cd .." yazarak bir üst directorye geçebiliriz.
ls
-> bulunduğumuz directory içeriği.
ls -al -> gizli dosyaları da gösterir.
touch
-> dosya yöneticisi "." ile başlayan dosya oluşturulmasına izin vermesse kullanılabilir.
mkdir -> verilen isimde bir klasör oluşturur.
rm -> verilen isimdeki dosyayı siler.
rm -rf -> verilen isimdeki klasörü ve içeriğini siler.
clear
-> terminali temizlemek için kullanılır.
history -> terminalde son çalıştırdığınız komutların listesi.
Duvara asmalık sık kullanılan komut listesi

son güncelleme:12.02.2020

Yazının Sonu

Temel olarak başlangıç seviyesindeki ihtiyaçlarımızı karşılayacak kadar git’i öğrenmiş bulunmaktayız. Eğer ileri seviye kompleks projeler için yetersiz gelirse her zaman önerebileceğim kaynak resmi dökümanlardır. İleri tarihlerde bu dökümanın ben de öğrendikçe kendini güncellemesi, genişletmesi planlanmaktadır. Kodla Kalın ;)…

--

--

Berkcan Tezcaner

berkctezc.github.io | loves💙 tech💻, programming👨‍💻, rock👨‍🎤, guitar+bass🎸, video games🎮