Git Komutları ve Özellikleri
- melihcelenk
- Site Admin
- Mesajlar: 217
- Kayıt: 05 Eki 2021, 03:23
Git Komutları ve Özellikleri
Burada bazı git komutlarını göreceğiz.
Git oluşturma ve ilk commit (git status ile her defasında durumu kontrol edebiliriz)
Uzak sunucuya yükleme
Bir dal (branch) oluşturmak için aşağıdaki komutu kullanın.
Herhangi bir dala geçmek için aşağıdaki komutu kullanın.
Bir dal oluşturup bu dala geçmek için aşağıdaki komutu kullanın.
Örnek:
Master dalını (Master branch) getirir.
"yeni" adında bir dal oluşturur.
"yeni" dalını getirir.
Bir önceki commit'i son commit hâline getirir, mevcut commit'i tutar. Öncesinde git commit -m "mesaj" şeklinde commit atılması gerekir.
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
veya
kullanırız. Ardından remote'taki branch'i güncellemek için:
kullanırız.
ile commit'leri listeleriz.
Diyelim bir deneme yaptık ve projeye dahil etmek istemiyoruz.
ile arşivliyoruz ve son commit'imize geri dönüyoruz.
ile arşivlediklerimizin bir listesini görebiliriz.
son arşivimize ulaşmamızı sağlarken
belirttiğimiz index'tekine ulaşmamızı sağlar.
son commit açıklamasını değiştirir.
Daha geçmiş commit açıklamasını değiştirmek için:
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.
Çakışma hâlindeki bir merge işlemini geri almak için kullanılır.
Working Directory ile Staging Area arasındaki değişiklikleri görmek için kullanılır.
Working Directory ile Repository (son commit) arasındaki değişiklikleri görmek için kullanılır.
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
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
Kod: Tümünü seç
git remote add origin https://github.com/melihcelenk/yenirepo.git
git push -u origin master
Kod: Tümünü seç
git branch [DALİSMİ]
Kod: Tümünü seç
git checkout [DALİSMİ]
Kod: Tümünü seç
git checkout -b DALİSMİ
Kod: Tümünü seç
git checkout master
Kod: Tümünü seç
git branch yeni
Kod: Tümünü seç
git checkout yeni
Kod: Tümünü seç
git revert
Kod: Tümünü seç
git reset --soft HEAD~1
Ancak dosyalarımızın önceki commit'teki hâline gelmesini istiyorsak
Kod: Tümünü seç
git reset --hard HEAD~1
Kod: Tümünü seç
git reset --hard HEAD^
Kod: Tümünü seç
git push origin HEAD --force
Kod: Tümünü seç
git log
Diyelim bir deneme yaptık ve projeye dahil etmek istemiyoruz.
Kod: Tümünü seç
git stash
Kod: Tümünü seç
git stash list
Kod: Tümünü seç
git stash apply
Kod: Tümünü seç
git stash apply --index INDEXNUMARASI
Kod: Tümünü seç
git commit --amend -m "yeni commit açıklaması"
Daha geçmiş commit açıklamasını değiştirmek için:
Kod: Tümünü seç
git rebase -i HEAD~5
Kod: Tümünü seç
git merge --abort
Kod: Tümünü seç
git diff
Kod: Tümünü seç
git diff HEAD
Kod: Tümünü seç
git diff --staged HEAD
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