Photo by Eugen Str on Unsplash

Geliştirici Araçları

Git Komutları ve Kullanımı

Onur Dayıbaşı
4 min readFeb 15, 2017

--

2 Sebepten dolayı kaynak kontrol sistemine ihtiyaç duyarız;

  • Kaynak kodunuzun değişimlerini takip etmek ve bunu yönetebilmek
  • Birlikte kod geliştirmek.

Git bu ihtiyaçları karşılamak hazır bir takım fonksiyonlara sahip. Aşağıda jrebel hazırlamış olduğu görselde bu fonksiyonları görebilirsiniz.

1. Git Komutları

image from https://www.jrebel.com/blog/git-cheat-sheet

Bir klasör oluşturup içerisinde

git init 

fonksiyonu çalıştırdığımızda .git altında ufak bir dosya yönetim sistemi oluşturduğunu görebilirsiniz.

Bu klasörün içerisinde dosyalarınızın state(versiyonlarını) tutacaktır.

  • Bu dosyalar arasındaki farklar,
  • commit sırasındaki kesitler

hepsi bu dosyalar içerisinde tutulmaktadır.

klasörde yer alan git dosyası ve .git içerisinde neler bulunur
HEAD
branches
config
description
hooks
index
logs
objects
packed-refs
refs

.gitignore dosyası git dosya sistemine katılmasını isteMediğiniz binary vb dosyalar için kullanılır. Örnek istenmeyen dosya türlerini bu linkinden erişebilirsiniz.

2. Git Veri Akışı

Aşağıdaki resimden git veri akışının nasıl gerçekleştirildiğini görebilirsiniz. Aşağıdaki komutlarla bunun nasıl çalıştığına bakalım.

3. Untracked Files (İzleri Oluşturulmamış Dosyalar)

a1.txt ve a2.txt dosyalarını çalıştığınız klasöre eklediğimizde bunları henüz izleri oluşturulmamıştır.

git status

fonksiyonu ile izi oluşmamış(untracked) dosyaları görebililirsiniz.

4. Staging Taşıma

git add 

fonksiyonu ile a1.txt , a2.txt dosyasını Staging Alanına geçirmiş oluruz.

Git Local Operations
git add nasıl çalışır ?

İstediğiniz dosyayı Staging Alanından çıkarmak için

git reset HEAD <filename>

komutunu kullanmanız yeterlidir.

5. Local (Kendi Çalışma Ortamınızaki) Dosyaları Değiştirmek

a1.txt dosyasınde değişiklik yaptım

git status 

dosyanın local tarafta modified olduğunu görebilirim.

git diff 

ile de baktığımda dosyada hangi alanların değiştiğini görebilirim

git checkout — a1.txt

ile yaptığınız değişikliği geriye alabilirsiniz.

Dosyalar üzerinde Çalışmak

6. Commit (Save to Local Repo)

git commit -m ‘msg’ 

komutu ile dosyalarınızı Local Repo’nuzda kaydedin..

local repoya kayıt

7. Push (Save to Remote Repo)

git push origin master 

komutu ile uzaktaki repo üzerine kayıt yapabilirsiniz.

8. Pull (Get From Remote Repo)

git pull

Push yapmadan bir pull yapın çünkü başkaları Remote Repo’da değişiklikler yapmış olabilir önce değişiklikleri alıp sonrasında kendi değişikliklerinizi yapmanız gerekir.

9. Conflict/Merge

Gerçek dünyada siz bir dosyada bir güncelleme yaparken başka birisi o dosyayı silmiş, ismini değiştirmiş olabilir. Bunun için bu farklılıkları çözmemiz gerekir. Oluşabilecek durumlar.

1nci tip Sorun: İki kişinin aynı dosyada değişiklik yapması .
Çözüm: Bendeki kaynağı kullan, Ondaki kaynağı kullan, İkimizdekini mantıklı bir şekilde gözle birleştir.

git pull 

komutunu çalıştırdığınızda CONFLICT oluşur. Dosyada <<<<<HEAD olarak gösterilen kısımlar Local değişiklik === Remote’dan gelen değişiklikleri görebilirsiniz.

2nci tip Sorun: Birisinin çalıştığı dosyaları ,diğer kişinin silmesi
Çözüm: Bendeki kaynağı kullan, Ondaki kaynağı kullan..

Değişikliği yapıp direk push etmeye çalıştığımda

(fetch first) 

uyarısını aldım.

2nci tip sorunda AutoFix işleminin yapılamadığını görebilirsiniz. Bunun için kendiniz dosyayı local repo’dan çıkarıp tekrar commit yapmanız gerekir.

10. Değişikliklerin Tarihçesini ve Detayını Gör

git logs 

komutu ile değişikliklerin tarihçesini görebilirsiniz..

git shows 

komutu ile ilgili comit içerisinde yapılan değişiklikleri görebilirsiniz..

11. Git Branch Oluşturma

Genelde projelerde master, development, bugfix, release, poc amaçlı dallar(branch) oluşturulur. Bu dalları oluşturmak git ile oldukça basittir .

git branch 

komutları ile branch lerinizi kolay bir şekilde yönetebilirsiniz..

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--

Responses (2)