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.gitSenaryo - 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 masterBir 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 masterBir 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 silmeProjelerimiz 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.
Kenan Subaşı
Github: https://github.com/kenansubasi
Bitbucket: https://bitbucket.org/kenansubasi/
Linkedin: https://www.linkedin.com/in/kenansubasi/
Gmail: kenansubasiceng@gmail.com
Git
By kenansubasi
Git
- 4,848