Kullanıcı Aletleri

Site Aletleri


tr:cs:git:workflow

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:workflow [2026/03/07 18:24] ulascemhtr:cs:git:workflow [2026/03/07 18:48] (mevcut) ulascemh
Satır 47: Satır 47:
 Sen bir dalda çalışırken ana dalda değişiklikler olmuş olabilir. Gerek sen veya bir ekip üyesi değişiklik gerçekleştirmiş olabilir. **Merge** senin dalını ve ana dalını alır, ikisinin son hallerini birleştirip **Merge commit** adında yeni bir kayıt oluşturur. Sen bir dalda çalışırken ana dalda değişiklikler olmuş olabilir. Gerek sen veya bir ekip üyesi değişiklik gerçekleştirmiş olabilir. **Merge** senin dalını ve ana dalını alır, ikisinin son hallerini birleştirip **Merge commit** adında yeni bir kayıt oluşturur.
  
-<WRAP info>+<WRAP help>
 **Ne zaman kullanılır?** **Ne zaman kullanılır?**
  
Satır 56: Satır 56:
 Tarihçeyi asla silmez veya değiştirmez. Güvenlidir. Kimin ne zaman ne yaptığını tam olarak gösterir. Tarihçeyi asla silmez veya değiştirmez. Güvenlidir. Kimin ne zaman ne yaptığını tam olarak gösterir.
  
 +**Dezavantajı?**
 +
 +Çok fazla kişi proje üzerinde çalışıyorsa, proje geçmişi(log) "merge commit" çöplüğüne dönebilir ve örümcek ağı gibi karmaşık görünür.
 </WRAP> </WRAP>
  
 +<code bash>
 +git checkout main # Hedef dala geç.
 +git merge <DAL_ADI> # Birleştir.
 +</code>
  
 +==== Git Rebase ====
  
-^ ''git status'' | //Projenin o anki durumunu, değişen veya yeni eklenen dosyaları gösterir.//+Senin dalının başlangıç noktasını alırmain dalının en son haline taşırYani "Ben projeye dün başlamıştım ama sanki bugünherkesin son kodunun üzerine başlamışım gibi tarihçeyi yeniden yaz" der.
-^ ''git status'' | //Projenin o anki durumunudeğişen veya yeni eklenen dosyaları gösterir.// | +
-^ ''git status'' | //Projenin o anki durumunudeğişen veya yeni eklenen dosyaları gösterir.// |+
  
 +<WRAP help>
 +**Ne zaman kullanılır?**
  
 +Kendi yerel (henüz push edilmemiş) dalını, ana projenin güncel haliyle senkronize etmek için. "Merge commit" kirliliği yaratmadan temiz bir geçmiş isteniyorsa.
 +
 +**Avantajı?**
 +
 +Dümdüz, okuması çok kolay bir proje geçmişi sağlar. Gereksiz merge commit'leri olmaz.
 +
 +**Dezavantajı?**
 +
 +Tarihçeyi yeniden yazar. Bu yüzden tehlikeli olabilir.
 +</WRAP>
 +
 +<WRAP important>
 +Başka insanların da kullandığı ortak dallarda (örneğin main dalında) ASLA rebase yapma! Sadece kendi bilgisayarındaki, henüz kimsenin görmediği dallarda yap.
 +</WRAP>
 +
 +<code bash>
 +git checkout <DAL_ADI> # Kendi dalında ol.
 +git rebase main # Temeli güncelle
 +</code>
 +
 +==== Git Squash ====
 +
 +Kendi dalında çalışırken ufak tefek bir sürü commit atmış olabilirsin ("buton eklendi", "renk düzeltildi", "yazım hatası", "çalışmıyor deneme 1"). Bu gereksiz kalabalığı ana projeye atmadan önce, hepsini tek bir anlamlı commit ("Login Ekranı Tamamlandı") haline getirme işlemidir.
 +
 +<WRAP help>
 +**Ne zaman kullanılır?**
 +
 +Özellik geliştirme bittiğinde, PR (Pull Request) açmadan hemen önce geçmişi temizlemek için.
 +</WRAP>
 +
 +  - Kaç commit geriye gideceğini belirle (örneğin son 3 commit): ''git rebase -i HEAD~3''
 +  - Karşına bir metin editörü açılır. En üstteki commit pick olarak kalır, altındakilerin başındaki pick yazısını silip ''squash'' (veya sadece ''s'') yazıp kaydedersin.
 +  - Git sana yeni bir birleştirilmiş mesaj girmen için bir ekran daha açar. Mesajı yazar ve kaydedersin. Boom! 3 commit tek commit oldu.
 +
 +<WRAP info>
 +Not: GitHub üzerinden "Squash and Merge" butonuna basmak, bu işlemi otomatik yapmanın en kolay ve popüler yoludur
 +</WRAP>
 +
 +===== Acil Durumlarda Kullanılan Komutlar =====
 +
 +^ Kod ^ Açıklama ^
 +^ ''git stash'' | Çalışıyorsun ama işin bitmedi. Acilen başka bir dala geçmen gerekti. Mevcut değişikliklerini geçici olarak bir "çekmeceye" atar. Çalışma alanın temizlenir. |
 +^ ''git stash pop'' | Çekmeceye attığın yarım kalan kodları geri getirir. |
 +^ ''git reset HEAD~1'' | Yaptığın son commit'i iptal eder ama kodlarını silmez. (Yanlışlıkla commit atarsan kurtarıcıdır). |
 +^ ''git reset --hard HEAD~1'' | 🚨 TEHLİKELİ! Son commit'i VE yazdığın kodları tamamen siler, geri getirilemez. |
 +^ ''git revert <COMMIT_ID>'' | Hatalı bir commit'i silmez, ancak o commit'in yaptıklarının tam tersini yapan yeni bir commit atar. Ortak çalışılan public dallarda hata düzeltmenin en güvenli yoludur.. |
  
  
Satır 72: Satır 126:
 https://wiki.ulascemh.com/doku.php?id=tr:cs:git:workflow https://wiki.ulascemh.com/doku.php?id=tr:cs:git:workflow
 </wrap> </wrap>
 +
 +
 +
tr/cs/git/workflow.1772907883.txt.gz · Son değiştirilme: 2026/03/07 18:24 Değiştiren: ulascemh