Git Komutları ve Özellikleri

Mobil uygulama, web uygulaması, oyun geliştirme, ağ yönetimi ve diğer konular ile ilgili bilgileri burada bulabilirsiniz
Cevapla
Kullanıcı avatarı
melihcelenk
Site Admin
Mesajlar: 217
Kayıt: 05 Eki 2021, 03:23

Git Komutları ve Özellikleri

Mesaj gönderen melihcelenk »

Burada bazı git komutlarını göreceğiz.

Git oluşturma ve ilk commit (git status ile her defasında durumu kontrol edebiliriz)

Kod: Tümünü seç

git init
git status
git add .
git status
git commit -m "ilk commit"
git status
Uzak sunucuya yükleme

Kod: Tümünü seç

git remote add origin https://github.com/melihcelenk/yenirepo.git
git push -u origin master
Bir dal (branch) oluşturmak için aşağıdaki komutu kullanın.

Kod: Tümünü seç

git branch [DALİSMİ]
Herhangi bir dala geçmek için aşağıdaki komutu kullanın.

Kod: Tümünü seç

git checkout [DALİSMİ]
Bir dal oluşturup bu dala geçmek için aşağıdaki komutu kullanın.

Kod: Tümünü seç

git checkout -b DALİSMİ
Örnek:

Kod: Tümünü seç

git checkout master
Master dalını (Master branch) getirir.

Kod: Tümünü seç

git branch yeni
"yeni" adında bir dal oluşturur.

Kod: Tümünü seç

git checkout yeni
"yeni" dalını getirir.

Kod: Tümünü seç

git revert
Bir önceki commit'i son commit hâline getirir, mevcut commit'i tutar. Öncesinde git commit -m "mesaj" şeklinde commit atılması gerekir.

Kod: Tümünü seç

git reset --soft HEAD~1
Bir önceki commit'i son commit hâline getirir, mevcut commit'i siler. Hatalı bir commit attığımızda bununla geri çevirebiliriz. Dosyalarımız hâlâ durur.

Ancak dosyalarımızın önceki commit'teki hâline gelmesini istiyorsak

Kod: Tümünü seç

git reset --hard HEAD~1
veya

Kod: Tümünü seç

git reset --hard HEAD^
kullanırız. Ardından remote'taki branch'i güncellemek için:

Kod: Tümünü seç

git push origin HEAD --force
kullanırız.

Kod: Tümünü seç

git log
ile commit'leri listeleriz.

Diyelim bir deneme yaptık ve projeye dahil etmek istemiyoruz.

Kod: Tümünü seç

git stash
ile arşivliyoruz ve son commit'imize geri dönüyoruz.

Kod: Tümünü seç

git stash list
ile arşivlediklerimizin bir listesini görebiliriz.

Kod: Tümünü seç

git stash apply
son arşivimize ulaşmamızı sağlarken

Kod: Tümünü seç

git stash apply --index INDEXNUMARASI
belirttiğimiz index'tekine ulaşmamızı sağlar.

Kod: Tümünü seç

git commit --amend -m "yeni commit açıklaması"
son commit açıklamasını değiştirir.

Daha geçmiş commit açıklamasını değiştirmek için:

Kod: Tümünü seç

git rebase -i HEAD~5
son 5 commit'i düzenlemek üzere not defteri açar. Ardından değiştirmek istediğimiz commit için pick yerine reword yazarız ve kaydedip çıkarız. Yeni bir not defteri açılır ve ismi değiştirip kaydedip çıkarız.

Kod: Tümünü seç

git merge --abort
Çakışma hâlindeki bir merge işlemini geri almak için kullanılır.

Kod: Tümünü seç

git diff
Working Directory ile Staging Area arasındaki değişiklikleri görmek için kullanılır.

Kod: Tümünü seç

git diff HEAD
Working Directory ile Repository (son commit) arasındaki değişiklikleri görmek için kullanılır.

Kod: Tümünü seç

git diff --staged HEAD
Staging Area ile Repository (son commit) arasındaki değişiklikleri görmek için kullanılır.


Merge Çeşitleri

Fast Forward Merge
Yeni bir branch oluşturulduktan sonra Master branch'te hiçbir değişiklik yapılmadıysa master üzerinde git merge komutu uygulandığında fast forward merge yapılır. Yeni branch'teki commit'ler master çizgisi üzerinde yer alır.
No Fast Forward Merge
Yine aynı şekilde yeni bir branch oluşturulduktan sonra Master branch'te hiçbir değişiklik yapılmadıysa, git merge --no-ff komutu uygulandığında no fast forward merge yapılır. Bu kez yeni branch'teki commit'ler ayrılarak paralel bir çizgide gösterilir ve uçları master çizgisine bağlanır.
3 Way Merge (Automatic Merge)
Master branch'te yeni bir branch oluşturulduktan sonra değişiklik yapıldıysa git merge komutu uygulandığında eğer çakışma yoksa otomatik olarak birleştirme yapılır.
Conflict
İki farklı branch'te aynı yerlerde değişiklikler yapılması durumunda hangisinin geçerli olacağı belirsiz olur ve çakışma meydana gelir. Bu durumda değişikliği yapmak bizim sorumluluğumuzdadır. İlgili dosyalar git mergetool komutuyla açılarak seçim yapılır ve dosya kaydedilip commit işlemi yapılır.

Git Rebase

a ve b branchlerimiz şekildeki gibi olsun.
__________b1 -> b2
a1 -> a2 -> a3 -> a4

b branchimizdeyken git rebase a komutunu kullanırsak b1 ve b2 commit'leri a4 commit'inden sonra dallanacak şekilde yeniden konumlandırılacaktır.

_________________ b1 -> b2
a1 -> a2 -> a3 -> a4

Bu aşamadan sonra artık fast forward merge yapılabilir.
Conflict oluşması durumunda git mergetool komutuyla açılarak seçim yapılır ve git rebase --continue komutuyla işlem tamamlanır.

* * *

Windows üzerinde bir GitHub hesabına giriş yaptık ve sonradan başka hesaba geçmek istiyorsak:

Denetim Masası/Kullanıcı Hesapları/Kimlik Bilgileri Yöneticisi/Windows Kimlik Bilgileri/GitHub üzerinden düzenleme veya kaldırma işlemini yapabiliriz.

Daha fazlası için:
https://medium.com/kodcular/githuba-8-a ... 7f7f8aeaf3
https://medium.com/huawei-developers-tr ... ef49d91eaa
https://odayibasi.medium.com/git-komutl ... ec0c07a434
https://aliozgur.gitbooks.io/git101/con ... stash.html
Cevapla