Git

( Versiyon Kontrol Sistemi )

Kurulum ve Ayarlamalar

git config --global user.name "kenansubasi"

git config --global user.email "kenansubasiceng@gmail.com"

Proje Oluşturma ve Klonlama


git clone https://github.com/kenansubasi/git101.git

Senaryo - 1

Projemize yeni başladığımızı, daha önceden yazmış olduğumuz bir kod olmadığını düşünelim. Öncelikle repo oluşturuyoruz sonra aşağıdaki komut ile repoyu yerelimize çekiyoruz.

git remote add origin https://github.com/kenansubasi/git101.git
# Yeni remote ekleme

git remote set-url origin git@github.com:kenansubasi/git101.git
# Eklenen remote'un gösterdiği yolu değiştirme

git remote -v
# Tüm remote'ları görme

git remote rename origin base
# Remote adı değiştirme

git remote rm base
# Remote silme

Git Remote

Remote uzun linkler ile commitlerimizi uzak sunucumuza göndermektense bu linklere kısa isimler vermemizi sağlayan bir yapı.

git init 
# Boş bir git dizini oluşturur.


git remote add origin https://github.com/kenansubasi/git101.git
# Yeni bir remote ekler.

Senaryo - 2

Daha önceden tamamlamış veya halen geliştirmekte olduğumuz bir projeyi git ortamlarından birine taşımak istiyoruz. Bunun için yine önce bir repo oluşturuyoruz. Daha sonra aşağıdaki komutları koşuyoruz.

SSH Ekleme

ssh-keygen / ssh-keygen -t rsa -b 4096 -C "kenan-ubuntu"

# Oluşan key'den uzantısı .pub olan dosya içinde yazanları kopyalayıp. (~/.ssh/id_rsa.pub) 
# Github, Bitbucket veya Gitlab ayarlarında ilgili yere ekleyin. (SSH KEYS) 

ssh-add ~/.ssh/id_rsa

# Eğer "Could not open a connection to your authentication agent"
# hatası aldıysanız bu komutta. Aşağıdaki komutu çalıştırdıktan sonra 
# tekrar deneyin.
eval `ssh-agent -s`

ssh-agent

# Not: Remote adresi ssh'a uygun olmalı (git@github.com:kenansubasi/git101.git)

İlk Commit

git status
# Değiştirilmiş, eklenmiş, silinmiş dosyaları gösterir.

git add requirements.txt
# Yeni eklenen veya değiştirilen dosyayı uzak sunucuya gönderilmek üzere ekler.


git commit -m "Dependencies created."
# Uzak sunucuya gönderilmek üzere eklenen değişikliklere
# yaptığınız işlemi kısaca açıklayacak bir mesaj yazılmalıdır.


git push origin master
# Yapılan değişiklikler uzak sunucuya gönderilir.

Bir dosya oluşturun yada var olan bir dosyada değişiklik yapın.

Commit Mesajı Değiştirme

git add requirements.txt
git commit -m "Incorect commit message."

git commit --amend -m "Correct commit message."
# Sadece son commit'in mesajını bu şekilde değiştirebilirsiniz.
# Önceki commit mesajları değiştirmek için
# https://help.github.com/articles/changing-a-commit-message/

Örneğin bir önceki slayt'taki işlemleri git push komutu haricinde gerçekleştirdiniz. Yani commiti yerelinizde oluşturdunuz ancak uzak sunucuya daha göndermediniz. Farkettiniz ki commit mesajını yanlış veya eksik yazmışsınız. Bu durumda commit mesajını aşağıdaki komut ile değiştirmeniz mümkün.

Değişiklikleri Görme ve Geri Alma

git diff
# Yapılan tüm değişikleri detaylı şekilde gösterir.

git checkout -f
# Yapılan tüm değişiklikleri geri alır.

git diff requirements.txt
# Sadece requirements.txt dosyasındaki değişiklikleri
# detaylı şekilde gösterir.

git checkout requirements.txt
# requirements.txt dosyasında yapmış olduğunuz tüm değişiklikleri 
# geri alır.

Örneğin bir dosya üzerinde birçok değişiklik yaptınız. Bu yaptığınız değişiklikleri son committeki haline aşağıdaki komut ile getirmeniz mümkün.

Gönderilecekler Listesinden Çıkarma

git reset requirements.txt
// requirements.txt dosyasını gönderilecekler listesinden çıkartır.

git reset
// Gönderilecekler listesine eklenen tüm dosyaları çıkartır.

Örneğin bir dosyayı git add komutu ile gönderilecekler listesine eklediniz. Daha sonra dosyayı çıkarmak isterseniz bu işlemi aşağıdaki komut ile yapabilirisiniz.

Dosya Adını Değiştirme

git mv requirement.txt requirements.txt

git commit -m "File name updated."

git push origin master

Bir dosyanın adını git komutu ile değiştirip uzak sunucuya yansıtabiliriz.

Dosya Silme

git rm requirements.txt

git commit -m "Dependencies deleted."

git push origin master

Bir dosyayı silip  git komutu ile uzak sunucuya yansıtabiliriz.

Commit'leri Görme ve İnceleme

git log
# Yapmış olduğunuz tüm commitleri gösterir.

git log -2
# Yapmış olduğunuz son iki commiti gösterir.

Commit Geri Alma

git revert 0a40e9b
# commit id kullanılır.

Yapmış olduğunuz bir committeki değişikliklerin tam tersi bir commit atarak geri alabilirsiniz.

Commit Silme

git log -3

# Yapmış olduğumuz son üç commit aşağıdakiler olsun.
# 0a4652
# 2jkd34
# 29467a
# Örneğin biz 0a4652, 2jkd34 commitlerini silmek isteyelim.

git reset --hard 29467a 
# Yerelinizdeki en son commiti gösteren pointer 29467a
# commitini göstercek şekilde ayarlanır.
# Eğer --hard parametresi yerine --soft parametresi
# kullanırsanız commit'leri siler ancak yaptığınız
# değişikleri tutar.

git push origin master --force 
# Yaptığınız değişiklik uzak sunucunuza yansıtılır.


Yapmış olduğunuz commit veya commitleri uzak sunucuzda ve yerelinizde silebilirsiniz.

Branch

Branch

Branch Oluşturma

git branch
# Yereldeki branch'ları gösterir. O an bulunduğunuz branch'ıda belirtir.
# * master

git branch -r
# Uzak Sunucudaki branch'ları gösterir.
# -a parametresi yerel ve uzak sunucudaki branch'ların hepsini gösterir. 

git branch develop
# O an bulunduğumuz branch'tan (master) develop adında yeni branch dallandırır.
# * master
# develop

git checkout develop
# Develop branchına geçiş yapar.
# master
# * develop

Kısaltma
git branch develop                 
                            ===>    git checkout -b develop      
git chekcout develop  

Branch Adı Değiştirme

git branch -m develop production
# Yerelde değiştirdik. Ancak uzak sunucuya daha yansıtmadık bu işlemi.
# Eğer o an bulunduğunuz dalın ismini değiştirmek istiyorsanız
# git branch -m production komutu girmeniz yeterli.

git push -u origin :develop production
# Uzak sunucuya yansıtıldı.

Branch Silme

git branch -D develop
# Yerelde develop branchını siler.
# -d parametresi eğer merge edilmeyen değişiklik varsa uyarır sizi.
# -D parametresi merge edilmeyen değişiklik olsa da siler.

git push origin :develop
# Uzak sunucuda develop branchını siler


# Not: Branch silerken o an bulunduğumuz branch'ı silemeyiz.

Branch Birleştirme

git pull origin develop
# develop branch'ında olup master branch'ında olmayan commit'leri
# master branch'ına çekip birleştirme işlemi yapar.

git rebase develop
# Bu komut history'i düzelterek birleştirme işlemi yapar.

Örneğin master branchında olduğumuzu ve develop branch'ındaki değişiklikleri master branchına aktarmak istediğimizi düşünelim. Bunu aşağıdaki komut ile yapabiliriz.

Tag Oluşturma ve Silme

git tag v0.1.0
# v0.1.0 tag'i son commiti gösterecek şekilde yerelde oluşturuldu.
# Eğer daha önceki bir commit'i tag'lemek isterseniz
# git tag v0.1.0 29467a komutunu girmelisiniz.

git push origin v0.1.0
# v0.1.0 tag'i uzak sunucuya gönderildi.

git tag / git tag -l
# Tag listeleme

git tag -d v0.1.0
# Yerelde tag silme

git push origin :v0.1.0
# Uzak sunucuda tag silme

Projelerimiz bazı noktalarda etiketleyebiliyoruz. Tag'leri branch gibi düşünebiliriniz. Genelde versiyonlama işleminde sıklıkla kullanılır.

Tag Değiştirme


git tag --force v0.1.0 29467a

git push origin --force --tags

Oluşturduğunuz bir tag'in commit'ini güncelleyebilirsiniz.

Pull Request

Aşağıdaki linklerde pull-request'in nasıl yapılacağı anlatılıyor. Verilen linklerdeki repolara anlatılan adımları izleyerek pull-request açmayı deneyebilirsiniz.

 

 

https://github.com/ktucec/test-repo

https://bitbucket.org/ktucec/test-repo

Kenan Subaşı

Git

By kenansubasi

Git

  • 4,848