Kullanıcı Aletleri

Site Aletleri


tr:cs:git:workflow

Bu, dökümanın eski bir sürümüdür!


Git İş Akışı

Yerel Repoyu Github'a Aktarma

git init -b main
git add --all
git commit -m "First commit"
git remote add origin <REMOTE_URL>
git remote -v
git push origin main

Temel İş Akışı

Kod Açıklama
git status Projenin o anki durumunu, değişen veya yeni eklenen dosyaları gösterir.
git add <DOSYA_ADI> Belirli bir dosyadaki modifikasyonları hazırlık alanına1) ekler.
git add . veya git add –all Klasördeki tüm değişiklikleri hazırlık alanına ekler..
git commit -m “COMMIT_MESAJI” Hazırlık alanındaki dosyaları kalıcı olarak proje tarihçesine kaydeder.
git log Geçmiş commit'leri (tarihçeyi) listeler. Çıkmak için q tuşuna basılır..

Uzak Deoplarla İşlemler

Kod Açıklama
git remote add origin <url> Yerel deponuzu GitHub'daki bir depoya bağlar..
git push -u origin main Kodlarınızı GitHub'a gönderir (İlk seferde -u kullanılır, sonra sadece git push yeterlidir).
git pull GitHub'daki güncel kodları bilgisayarınıza indirir ve mevcut kodunuzla birleştirir.
git fetch Uzak depodaki değişiklikleri bilgisayara indirir ama birleştirmez (sadece ne değişmiş diye bakmak için güvenlidir).

Dallanma

Ana projenizi (genelde main veya master dalı) bozmadan yeni özellikler denemek veya hataları çözmek için projenin paralel bir kopyasını oluşturmak için kullanılır.
git branch Mevcut dalları listeler. Hangi dalda olduğunu (yanında * olan) gösterir.
git branch <DAL_ADI> Yeni bir dal oluşturur.
git checkout <DAL_ADI> veya git switch <DAL_ADI> Başka bir dala geçiş yapar.
git checkout -b <DAL_ADI> Hem yeni dal oluşturur hem de o dala anında geçiş yapar.
git branch -d <DAL_ADI> İşi bitmiş ve birleştirilmiş bir dalı siler.

Dalları Birleştirme

Kendi dalında işini bitirdiğinde ve bunu ana projeye ektarmak istediğinde bu kodları kullanacaksın. İki yöntemi vardır.

Git Merge

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.

Ne zaman kullanılır?

Takım halinde çalışırken, ana dalları kendi dalına çekerken veya kendi bitmiş özelliğini ana dala atarken.

Avantajı?

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.

git checkout main # Hedef dala geç.
git merge <DAL_ADI> # Birleştir.
git status Projenin o anki durumunu, değişen veya yeni eklenen dosyaları gösterir.
git status Projenin o anki durumunu, değişen veya yeni eklenen dosyaları gösterir.
git status Projenin o anki durumunu, değişen veya yeni eklenen dosyaları gösterir.

Git Rebase

Senin dalının başlangıç noktasını alır, main dalının en son haline taşır. Yani “Ben projeye dün başlamıştım ama sanki bugün, herkesin son kodunun üzerine başlamışım gibi tarihçeyi yeniden yaz” der.

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.

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.

git checkout <DAL_ADI> # Kendi dalında ol.
git rebase main # Temeli güncelle

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.

Ne zaman kullanılır?

Özellik geliştirme bittiğinde, PR (Pull Request) açmadan hemen önce geçmişi temizlemek için.

  1. Kaç commit geriye gideceğini belirle (örneğin son 3 commit): git rebase -i HEAD~3
  2. 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.
  3. 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.

Not: GitHub üzerinden “Squash and Merge” butonuna basmak, bu işlemi otomatik yapmanın en kolay ve popüler yoludur

UCH Viki'den alınmıştır. https://wiki.ulascemh.com/doku.php?id=tr:cs:git:workflow

1)
staging area
tr/cs/git/workflow.1772908477.txt.gz · Son değiştirilme: 2026/03/07 18:34 Değiştiren: ulascemh