Kullanıcı Aletleri

Site Aletleri


tr:cs:git:cheatsheet

Farklar

Bu sayfanın seçili sürümü ile mevcut sürümü arasındaki farkları gösterir.

Karşılaştırma görünümüne bağlantı

İki taraf da önceki sürümÖnceki sürüm
Sonraki sürüm
Önceki sürüm
tr:cs:git:cheatsheet [2026/03/07 19:01] ulascemhtr:cs:git:cheatsheet [2026/03/07 19:12] (mevcut) ulascemh
Satır 3: Satır 3:
 ===== 🛠️ 1. Başlangıç ve Yapılandırma (Kurulum) ===== ===== 🛠️ 1. Başlangıç ve Yapılandırma (Kurulum) =====
  
-^ Kod ^ Açıklama ^ 
 ^ ''git config --global user.name "Adınız Soyadınız"'' | Git'e kullanıcı adını tanımlar. ''--global'' etiketini kullanmazsan sadece ilgili repoda kullanıcı adını değşiştirir. | ^ ''git config --global user.name "Adınız Soyadınız"'' | Git'e kullanıcı adını tanımlar. ''--global'' etiketini kullanmazsan sadece ilgili repoda kullanıcı adını değşiştirir. |
 ^ ''git config --global user.email "[email protected]"'' | Git'e e-postanızı tanımlar. ''--global'' etiketini kullanmazsan sadece ilgili repoda kullanıcı adını değşiştirir. | ^ ''git config --global user.email "[email protected]"'' | Git'e e-postanızı tanımlar. ''--global'' etiketini kullanmazsan sadece ilgili repoda kullanıcı adını değşiştirir. |
Satır 15: Satır 14:
 ===== 📦 2. Temel İş Akışı (Değişiklikleri Kaydetme ve İnceleme) ===== ===== 📦 2. Temel İş Akışı (Değişiklikleri Kaydetme ve İnceleme) =====
  
-^ Kod ^ Açıklama ^ 
 ^ ''git status'' | Projenin o anki durumunu gösterir. (En çok kullanacağın komut). | ^ ''git status'' | Projenin o anki durumunu gösterir. (En çok kullanacağın komut). |
 ^ ''git diff'' | Hazırlık alanına (staging area) eklenmemiş tüm değişiklikleri (satır satır) gösterir. | ^ ''git diff'' | Hazırlık alanına (staging area) eklenmemiş tüm değişiklikleri (satır satır) gösterir. |
Satır 55: Satır 53:
 ^ ''git cherry-pick <commit_hash>'' | Başka bir daldaki tek bir commit'i (ve sadece onu) alıp senin bulunduğun dala uygular. | ^ ''git cherry-pick <commit_hash>'' | Başka bir daldaki tek bir commit'i (ve sadece onu) alıp senin bulunduğun dala uygular. |
  
-🔀 5. Birleştirme (Merge) & Çakışma (Conflict) Çözme+===== 🔀 5. Birleştirme (Merge) & Çakışma (Conflict) Çözme =====
  
-git merge <dal_adi>Belirtilen dalı, bulunduğun dala birleştirir.+^ ''git merge <dal_adi>''Belirtilen dalı, bulunduğun dala birleştirir. 
 +^ ''git mergetool'' | Birleşme sırasında çakışma (conflict) çıkarsa, yapılandırdığın görsel aracı (örneğin Meld) açarak çözmeni sağlar. | 
 +^ ''git rebase <dal_adi>'' | Senin dalının başlangıç noktasını, belirtilen dalın en güncel haline taşır. Doğrusal bir tarihçe sağlar. | 
 +^ ''git rebase --abort'' | Rebase sırasında çok fazla çakışma çıkarsa veya işler ters giderse işlemi tamamen iptal edip en başa döner. |
  
-git mergetool: Birleşme sırasında çakışma (conflictçıkarsa, yapılandırdığın görsel aracı (örneğin Meldaçarak çözmeni sağlar.+  * Çakışma (Conflictçözüldükten sonra Rebase'e devam etme: 
 +  * Çakışan dosyaları düzelt. 
 +    * ''git add <cozulen_dosya>'' (veya gerekmiyorsa ''git rm <dosya>''
 +    * ''git rebase --continue'' (Bu işlem bitene kadar tekrarlanır).
  
-git rebase <dal_adi>: Senin dalının başlangıç noktasını, belirtilen dalın en güncel haline taşır. Doğrusal bir tarihçe sağlar. 
  
-git rebase --abort: Rebase sırasında çok fazla çakışma çıkarsa veya işler ters giderse işlemi tamamen iptal edip en başa döner.+===== ✍️ 6. Geçmişi Düzenleme (Amend) ve Sıkıştırma (Squash) =====
  
-Çakışma (Conflictçözüldükten sonra Rebase'e devam etme:+==== A) Son Commit'i Değiştirme (Amend====
  
-Çakışan dosyaları düzelt.+> Yanlış mesaj yazdın veya bir dosyayı eklemeyi unuttun. (Eğer henüz uzak depoya push etmediysen güvenlidir).
  
-git add <cozulen_dosya> (veya gerekmiyorsa git rm <dosya>)+^ ''git commit --amend'' | Hazırlık alanındaki dosyaları son commit'in içine katar ve mesajı değiştirmen için editörü açar. | 
 +^ ''git commit -a --amend'' | Tüm değişen dosyaları otomatik ekleyip son commit'i günceller. | 
 +^ ''git commit --amend --no-edit'' | Mesajı değiştirmeden sadece unuttuğun dosyaları son commit'e dahil eder. | 
 +^ ''git commit --amend --date="date"'' | Son commit'in tarihini değiştirir. | 
 +^ ''GIT_COMMITTER_DATE="date" git commit --amend'' | Hem commit hem de committer tarihini geçmiş bir zamana alır. (Örn: ''git commit --date="date --date='1 day ago'" -am "Mesaj"''|
  
-git rebase --continue (Bu işlem bitene kadar tekrarlanır).+==== B) Sıkıştırma (Interactive Rebase / Squash====
  
-✍️ 6. GeçmişDüzenleme (Amend) ve Sıkıştırma (Squash)+> Çok sayıda küçük commit'tek, anlamlı bir commit haline getirme.
  
-A) Son Commit'i Değiştirme (Amend) +  - ''git rebase -i <birlestirmek_istedigin_en_eski_commitin_bir_oncesi>'' 
- +  Karşına çıkan editörde:
-Yanlış mesaj yazdın veya bir dosyayı eklemeyi unuttun. (Eğer henüz uzak depoya push etmediysen güvenlidir). +
- +
-git commit --amend: Hazırlık alanındaki dosyaları son commit'in içine katar ve mesajı değiştirmen için editörü açar. +
- +
-git commit -a --amend: Tüm değişen dosyaları otomatik ekleyip son commit'i günceller. +
- +
-git commit --amend --no-edit: Mesajı değiştirmeden sadece unuttuğun dosyaları son commit'e dahil eder. +
- +
-git commit --amend --date="date": Son commit'in tarihini değiştirir. +
- +
-GIT_COMMITTER_DATE="date" git commit --amend: Hem commit hem de committer tarihini geçmiş bir zamana alır. (Örn: git commit --date="date --date='1 day ago'" -am "Mesaj"+
- +
-B) Sıkıştırma (Interactive Rebase / Squash) +
- +
-Çok sayıda küçük commit'i tek, anlamlı bir commit haline getirme. +
- +
-git rebase -i <birlestirmek_istedigin_en_eski_commitin_bir_oncesi> +
- +
-Karşına çıkan editörde:+
  
 +<code bash>
 # Önceki Hali: # Önceki Hali:
 pick 1a2b3c4 İlk yapı pick 1a2b3c4 İlk yapı
Satır 106: Satır 95:
 squash 5d6e7f8 Ufak düzeltme squash 5d6e7f8 Ufak düzeltme
 squash 9g0h1i2 Renk ayarı squash 9g0h1i2 Renk ayarı
 +</code>
  
 +  - Kaydet ve çık. Yeni bir mesaj ekranı gelecek, birleştirilmiş commit için tek bir mesaj yaz.
  
-Kaydet ve çıkYeni bir mesaj ekranı gelecekbirleştirilmiş commit için tek bir mesaj yaz.+===== 🔍 7İncelemeArama ve Loglar =====
  
-🔍 7. İncelemeArama ve Loglar+^ ''git log'' | Detaylı commit geçmişini listeler
 +^ ''git log --oneline'' | Her commit'i tek bir satırda, daha temiz gösterir. | 
 +^ ''git log --author="isim"'' | Sadece belirli bir kişinin yaptığı commit'leri gösterir. | 
 +^ ''git log -p <dosya_adi>'' | Belirli bir dosyanın geçmişte nasıl değiştiğini (satır satır diff olarak) gösterir. | 
 +^ ''git log --oneline <origin/master>..<remote/master> --left-right''İki farklı dal arasındaki farkları (kim kimin ilerisinde) oklarla listeler. | 
 +^ ''git log -S 'kelime''' | İçinde belirli bir kelimenin eklenip/silindiği commit'leri arar. | 
 +^ ''git log -S 'kelime' --pickaxe-regex'' | Yukarıdaki aramayı Regex (Düzenli İfade) ile yapar. | 
 +^ ''git grep "Aranan"'' | Tüm projedeki dosyalar içinde "Aranan" metnini bulur. | 
 +^ ''git grep "Aranan" v2.5'' | Belirli bir sürümde veya dalda bu kelimeyi arar. | 
 +^ ''git blame <dosya_adi>'' | Bir dosyanın her bir satırını en son kiminne zaman değiştirdiğini gösterir. (Kodu kimin bozduğunu bulmak için efsanedir). | 
 +^ ''git reflog show'' | Git'teki yaptığın her hareketin (silinen dallar, resetlenen commitler dahil) günlüğünü tutar. Kaybettiğin her şeyi buradan bulabilirsin. | 
 +^ ''git reflog delete'' | Reflog geçmişini siler. |
  
-git log: Detaylı commit geçmişini listeler. 
  
-git log --oneline: Her commit'i tek bir satırda, daha temiz gösterir.+===== 🏷️ 8. Etiketleme (Tagging) Sürümlendirme =====
  
-git log --author="isim": Sadece belirli bir kişinin yaptığı commit'leri gösterir.+> Önemli anları (örneğin v1.0.0 sürümü) işaretlemek için kullanılır.
  
-git log -<dosya_adi>: Belirli bir dosyanın geçmişte nasıl değiştiğini (satır satır diff olarakgösterir.+^ ''git tag'' | Mevcut tüm etiketleri listeler. | 
 +^ ''git tag -n'' | Etiketleri, yanlarındaki mesajlarıyla birlikte listeler. | 
 +^ ''git tag <etiket_adi>'' | Basit, hafif bir etiket oluşturur (Örn: ''git tag v1.0''). | 
 +^ ''git tag -a <etiket_adi>'' | Ekstra bilgi eklenebilen anotasyonlu etiket oluşturur (Tavsiye edilen). 
 +^ ''git tag <etiket_adi> -am 'Mesaj'' | Anotasyonlu etiketi doğrudan mesajla oluşturur. |
  
-git log --oneline <origin/master>..<remote/master> --left-right: İki farklı dal arasındaki farkları (kim kimin ilerisindeoklarla listeler.+===== 🧳 9Zula (StashYönetimi =====
  
-git log -S 'kelime': İçinde belirli bir kelimenin eklenip/silindiğcommit'leri arar.+> Çalışıyorsun ama işin bitmedi. Başka dala geçmen gerektiğinde yarım kalan kodları saklama yöntemidir.
  
-git log -S 'kelime--pickaxe-regex: Yukarıdaki aramayı Regex (Düzenli İfadeile yapar.+^ ''git stash'' | Mevcut değişiklikleri geçici bir "çekmeceye" (zulaya) atar ve çalışma alanını temizler. | 
 +^ ''git stash list'' | Zuladaki tüm kayıtları listeler (örn: ''stash@{0}'', ''stash@{1}''). 
 +^ ''git stash pop'' | Zuladaki en son attığın kodları geri getirir ve zuladan siler. | 
 +^ ''git stash apply'' | Zuladaki en son kodları çalışma alanına getirir ama zuladan silmez. | 
 +^ ''git stash apply stash@{sayi}'' | Belirli bir sıradaki zulayı geri getirir. | 
 +^ ''git stash drop'' | En son zulayı tamamen çöpe atar. |
  
-git grep "Aranan": Tüm projedeki dosyalar içinde "Aranan" metnini bulur.+===== 🚑 10Geri Alma ve Acil Durumlar (Undo / Reset) =====
  
-git grep "Aranan" v2.5: Belirli bir sürümde veya dalda bu kelimeyi arar.+^ ''git checkout HEAD <dosya_adi>''Belirli bir dosyadaki commit edilmemiş tüm değişiklikleri iptal eder, dosyayı son commit'teki haline döndürür. | 
 +^ ''git reset HEAD'' | git add ile hazırlık alanına aldığın dosyaları, hazırlık alanından geri çıkarır (kodlar silinmez). | 
 +^ ''git reset <commit_hash>'' | Projeyi belirtilen eski commit'e döndürür ama kodları silmez (Değişiklikleri çalışma alanında bırakır). | 
 +^ ''git reset --keep <commit_hash>'' | Geçmiş bir noktaya dönerken, o an çalışma dizininde yaptığın (commitlenmemiş) yerel değişiklikleri korumaya çalışır. | 
 +^ ''git reset --hard <commit_hash>'' | 🚨 TEHLİKELİ! Projeyi o commit'e döndürür ve sonraki tüm kodları tamamen siler. | 
 +^ ''git reset --hard <uzak_repo/dal_adi>'' | (Örn ''git reset --hard upstream/master'') Kendi yerel kodlarını tamamen silip uzak depodaki dalın birebir aynısı yapar. | 
 +^ ''git revert <commit_hash>'' | Hatalı bir commit'in yaptıklarının tam tersini yapan yeni bir commit atar. (Tarihçeyi değiştirmediği için public repolarda hataları geri almanın en güvenli yoludur)|
  
-git blame <dosya_adi>: Bir dosyanın her bir satırını en son kimin, ne zaman değiştirdiğini gösterir. (Kodu kimin bozduğunu bulmak için efsanedir). +===== 💡 11. Faydalı İpuçları: .gitignore Sonrası Önbellek Temizleme =====
- +
-git reflog show: Git'teki yaptığın her hareketin (silinen dallar, resetlenen commitler dahil) günlüğünü tutar. Kaybettiğin her şeyi buradan bulabilirsin. +
- +
-git reflog delete: Reflog geçmişini siler. +
- +
-🏷️ 8. Etiketleme (Tagging) - Sürümlendirme +
- +
-Önemli anları (örneğin v1.0.0 sürümü) işaretlemek için kullanılır. +
- +
-git tag: Mevcut tüm etiketleri listeler. +
- +
-git tag -n: Etiketleri, yanlarındaki mesajlarıyla birlikte listeler. +
- +
-git tag <etiket_adi>: Basit, hafif bir etiket oluşturur (Örn: git tag v1.0). +
- +
-git tag -a <etiket_adi>: Ekstra bilgi eklenebilen anotasyonlu etiket oluşturur (Tavsiye edilen). +
- +
-git tag <etiket_adi> -am 'Mesaj': Anotasyonlu etiketi doğrudan mesajla oluşturur. +
- +
-🧳 9. Zula (Stash) Yönetimi +
- +
-Çalışıyorsun ama işin bitmedi. Başka dala geçmen gerektiğinde yarım kalan kodları saklama yöntemidir. +
- +
-git stash: Mevcut değişiklikleri geçici bir "çekmeceye" (zulaya) atar ve çalışma alanını temizler. +
- +
-git stash list: Zuladaki tüm kayıtları listeler (örn: stash@{0}, stash@{1}). +
- +
-git stash pop: Zuladaki en son attığın kodları geri getirir ve zuladan siler. +
- +
-git stash apply: Zuladaki en son kodları çalışma alanına getirir ama zuladan silmez. +
- +
-git stash apply stash@{sayi}: Belirli bir sıradaki zulayı geri getirir. +
- +
-git stash drop: En son zulayı tamamen çöpe atar. +
- +
-🚑 10. Geri Alma ve Acil Durumlar (Undo / Reset) +
- +
-git checkout HEAD <dosya_adi>: Belirli bir dosyadaki commit edilmemiş tüm değişiklikleri iptal eder, dosyayı son commit'teki haline döndürür. +
- +
-git reset HEAD: git add ile hazırlık alanına aldığın dosyaları, hazırlık alanından geri çıkarır (kodlar silinmez). +
- +
-git reset <commit_hash>: Projeyi belirtilen eski commit'e döndürür ama kodları silmez (Değişiklikleri çalışma alanında bırakır). +
- +
-git reset --keep <commit_hash>: Geçmiş bir noktaya dönerken, o an çalışma dizininde yaptığın (commitlenmemiş) yerel değişiklikleri korumaya çalışır. +
- +
-git reset --hard <commit_hash>: 🚨 TEHLİKELİ! Projeyi o commit'e döndürür ve sonraki tüm kodları tamamen siler. +
- +
-git reset --hard <uzak_repo/dal_adi>: (Örn: git reset --hard upstream/master) Kendi yerel kodlarını tamamen silip uzak depodaki dalın birebir aynısı yapar. +
- +
-git revert <commit_hash>: Hatalı bir commit'in yaptıklarının tam tersini yapan yeni bir commit atar. (Tarihçeyi değiştirmediği için public repolarda hataları geri almanın en güvenli yoludur). +
- +
-💡 11. Faydalı İpuçları: .gitignore Sonrası Önbellek Temizleme+
  
 Diyelim ki bir dosyayı önceden Git'e eklemiştin, sonra .gitignore içine yazdın ama Git hala o dosyayı takip etmeye devam ediyor. Önbelleği temizlemek için sırasıyla şunu çalıştır: Diyelim ki bir dosyayı önceden Git'e eklemiştin, sonra .gitignore içine yazdın ama Git hala o dosyayı takip etmeye devam ediyor. Önbelleği temizlemek için sırasıyla şunu çalıştır:
  
 +<code bash>
 git rm -r --cached . git rm -r --cached .
 git add . git add .
 git commit -m "Git takip önbelleği (.gitignore ayarları) temizlendi" git commit -m "Git takip önbelleği (.gitignore ayarları) temizlendi"
 +</code>
  
  
tr/cs/git/cheatsheet.1772910060.txt.gz · Son değiştirilme: 2026/03/07 19:01 Değiştiren: ulascemh