Skip to content

Git Komutları Cheat Sheet

Git, çok küçükten çok büyüğe kadar olan projelerin versiyon yönetimini verimli ve yüksek hızda gerçekleştirebilen, açık kaynaklı, dağıtık bir versiyon kontrol sistemidir. Git, Linus Torvalds tarafından Linux çekirdeği geliştirmesinin yönetilmesine yardımcı olmak amacıyla geliştirilmiş, açık kaynaklı bir versiyon kontrol yazılımıdır.

Git Temelleri

git init <directory>

Belirtilen dizinde boş bir Git deposu oluşturur. Parametre olmadan çalıştırılırsa, mevcut dizini bir Git deposu olarak başlatır.

git clone <repo>

<repo> adresindeki depoyu yerel makineye kopyalar. Orijinal depo yerel dosya sisteminde olabileceği gibi, HTTP veya SSH üzerinden uzak bir makinede de bulunabilir.

git config user.name <name>

Mevcut depodaki tüm taahhütler (commit) için kullanılacak yazar adını tanımlar.

git add <directory>

Bir sonraki taahhüt için <directory> dizinindeki değişiklikleri ekler.

git commit -m "<message>"

Hazırlanmış (staged) değişikleri <message> içeriğini taahhüt mesajı olarak kullanarak kaydeder.

git status

Hangi dosyaların hazırlık aşamasında, hazırlanmamış ve izlenmeyen durumda olduğunu listeler.

git log

Tüm taahhüt geçmişini varsayılan biçimde görüntüler.

git diff

Çalışma dizini (henüz git add yapılmamış) ile hazırlık alanı (git add yapıldıktan sonra) arasındaki farkları karşılaştırır.

Değişiklikleri Geri Alma

git revert <commit>

<commit> ile yapılan tüm değişiklikleri geri alan yeni bir taahhüt oluşturur ve bunu mevcut dala uygular.

git reset <file>

<file> dosyasını hazırlık alanından kaldırır ancak çalışma dizinini değiştirmez. Bu işlem, herhangi bir dosya değişikliğinin üzerine yazmadan dosyanın hazırlık aşamasını iptal eder.

git clean -n

Çalışma dizininden hangi dosyaların silineceğini gösterir. Temizliği gerçekleştirmek için -n bayrağı yerine -f bayrağını kullanın.

Geçmişi Yeniden Yazma

git commit --amend

En son Git taahhüt (commit) olayını değiştirir. Çalışma dizininde taahhüt edilebilir değişiklikler varsa, git commit –amend komutuyla bu değişiklikler de son taahhütle birlikte kaydedilir.

git rebase <base>

Mevcut dalı <base> üzerine yeniden temel alır (rebase). <base> bir taahhüt kimliği (commit ID), dal adı, etiket veya HEAD olabilir.

git reflog

Tüm dalların tüm işlem kayıtlarını (silinen taahhüt kayıtları ve sıfırlama işlemleri dahil) görüntüleyebilir.

Git Dalları (Branching)

git branch

Tüm dalları listeler. <branch> adında yeni bir dal oluşturmak için bir parametre ekleyin.

git checkout -b <branch>

<branch> adında yeni bir dal oluşturur ve bu dala geçer. Mevcut bir dala geçmek için -b parametresini kaldırın.

git merge <branch>

<branch> dalını mevcut dal ile birleştirir.

Uzak Depolar (Remote)

git remote add <name> <url>

Yeni bir uzak depo ekler. Uzak depo eklendikten sonra diğer komutlarda <url> yerine kısa yol olarak <name> kullanılabilir.

git fetch <remote> <branch>

Depodan belirtilen için tüm güncellemeleri alır, ancak yerel dal ile birleştirmez.

git pull <remote>

Mevcut dalın belirtilen uzak kopyasını alır ve hemen yerel kopyayla birleştirir.

git push <remote> <branch>

Dalı ve gerekli taahhütleri ve nesneleri <remote> de deposuna gönderir. Uzak depo üzerinde belirtilen isimde bir dal yoksa yeni bir dal oluşturulur.

git config

git config --global user.name <name>

Mevcut kullanıcının tüm taahhütleri için kullanılacak yazar adını tanımlar.

git config --global user.email <email>

Mevcut kullanıcının tüm taahhütleri için kullanılacak yazar e-postasını tanımlar.

git config --global alias.<alias-name> <git-command>

Bir Git komutu için kısa yol (takma ad) oluşturur.

git config --system core.editor <editor>

Bilgisayardaki tüm kullanıcılar için komutlar tarafından kullanılacak metin düzenleyiciyi ayarlar.

git config --global --edit

Genel yapılandırma dosyasını manuel düzenleme için bir metin düzenleyicide açar.

git log

git log -<limit>

Son <limit> taahhüt geçmişi kaydını görüntüler.

git log --oneline

Taahhüt geçmişini görüntüler ve her taahhüdü tek bir satıra sığdırır.

git log -p

Taahhüt geçmişini ve her taahhüt için tam farkı (diff) görüntüler.

git log --stat

Dosyaların hangilerinin değiştirildiği ve her dosyadan eklenen veya silinen göreli satır sayısı dahil olmak üzere taahhüt geçmişini görüntüler.

git log --author="<pattern>"

Belirli bir yazar tarafından yapılan taahhütleri arar.

git log --grep="<pattern>"

Düzenli ifade eşleşmesi kullanarak taahhüt geçmişini arar.

git log <since>..<until>

<since> ve <until> arasında gerçekleşen taahhütleri görüntüler.

git log -- <file>

Yalnızca belirtilen dosyayı içeren taahhüt kayıtlarını görüntüler.

git diff

git diff HEAD

Çalışma dizini (henüz git add yapılmamış) ile depo (git commit edildikten sonraki sürüm) arasındaki farkları karşılaştırır.

git diff --cached

Hazırlık alanı (git add yapıldıktan sonra) ile depo (git commit edildikten sonraki sürüm) arasındaki farkları karşılaştırır.

git reset

git reset

Hazırlık alanını en son taahhütle eşleşecek şekilde sıfırlar ancak çalışma dizinini değiştirmez.

git reset --hard

Hem hazırlık alanını hem de çalışma dizinini en son taahhütle eşleşecek şekilde sıfırlar ve çalışma dizinindeki tüm değişikliklerin üzerine yazar.

git reset <commit>

Mevcut dal işaretçisini <commit> değerine geri taşır ve hazırlık alanını sıfırlar ancak çalışma dizinini değiştirmez.

git reset --hard <commit>

Yukarıdakiyle aynıdır ancak hem hazırlık alanını hem de çalışma dizinini sıfırlar. Taahhüt edilmemiş değişiklikleri ve <commit> sonrası tüm taahhütleri siler.

git pull

git pull --rebase <remote>

Mevcut dalın uzak kopyasını alır ve yerel kopya üzerine yeniden temellendirir (rebase). Dalları birleştirmek için merge yerine git rebase kullanır.

git push

git push <remote> --force

Zorla gönderim (Force push) yapar.

git push <remote> --all

Tüm yerel dalları belirtilen uzak depoya gönderir.

git push <remote> --tags

Tüm yerel etiketleri uzak depoya gönderir.