Git Komutları

Mucahid Yazar
7 min readMay 7, 2021

Bu yazımda sizlerle en çok kullanılan ve benim en çok kullandığım Git komutlarını göstermek istiyorum. Ve en alta sizler için İngilizce bir cheat sheet bırakıyorum.

Github Login or Change User Account

Credential Manager / Windows Credential è Windows search bara yazınca çıkacaktır.

Github Commands

Bu kısımda sizlerle tek tek github komutlarının ne anlama geldiğini ne yaptığını yazacağım. İkinci bir kısımda ise sizlere bu komutlarla hangi tüm işlemler yapıldığını anlatacağım.

git init

Localde git initialization yani git entegrasyonunu başlatırız. Şu şekilde düşünün bilgisayarınızda git reposunu oluşturdunuz diyebiliriz. Bunu yaptığınız yerde .git adında bir klasör oluşur.

git remote -v

Repository’lerimizi görebiliriz.

git add .

Bu kodla dosyalarımız da değişiklik yaptıktan sonra dosyalarımızı stage edebiliriz. Add olmadan önce dosyalarımız unstaged’dır.

git commit -m “Mesajınız”

Git’e göndereceğimiz commitler için mesaj ekleyebiliriz.

Bütün Branch’leri Listemek

git branch

Tek Branch Clone Almak

git clone — single-branch — branch <branchn> <repository>

git clone — single-branch — branch ys-dev https://github.com/kzmyvr/biletsepeti-web.git

Local Branch Silmek

git push origin — delete master

Remote Branch Silmek

git push origin — delete branchName

Branch İsim Değiştirme

git branch -m <oldname> <newname>

git branch -m master newName

git switch -

2 branch arasın da basitçe ileri ve geri yaparak geçis yaparsınız.

Yeni Branch Oluşturmak

git checkout -b testbranch

Branch Değiştirme Yöntemi 1

git switch branchName

git switch develop = develop branch’ine geçersiniz.

Branch Değiştirme Yöntemi 2

git checkout another_branch

git checkout origin another_branch

git checkout origin/another_branch

git status

Dosyalarımızın commit edilip edilmediği gibi, stages unstaged gibi hallerini görürüz.

git add . && git commit -m “A new test”

Bu şekilde 2 kod işlemini aynı anda yapabiliriz.

git diff

Bu kodla dosyalarımız da yapılan değişiklikler satır satır gösterilir.
git diff develop — myFile.txt = develop branch’indeki myFile.txt dosyasındaki satır değişikliklerini gösterir.

git gui

Git GUI uygulamasını çalıştırır.

git config –list

Gerekli cofiguration’lari gösterir.

Git için Global ayarlanan ayarları göstermek

git config –global user.name

git config –global user.email

Git için Global olarak ayarlar tanımlamak

git config –global user.name ‘mucahidyazar’

git config –global user.email ‘mucahidyazar@gmail.com’

git restore –source 6bcf266b index.html

Belirlenen source koduna geri dönersiniz. Varsayalım index.html’de 10–20 arası değişiklik yaptınız ve 10–20 commit attiniz. Hepsinin index.html’in source kısmında kayıtları tutuluyor. Okodlari bulup bu komut koduna ekleyerek çalıştırdığınızda belirlenen geçmiş historydeki source koduna geri dönersiniz.

git log

Commit kayıtlarını görürüz.

git log -p

modified edilen logları gösterir.

git log — since=”3 weeks” -p

3 haftalık değiştirilmiş kodları gösterir.

Dosyadaki git directory’ı silmek

rm -rf .git

SOME GITHUB ACTIONS

Bu kısımda ise yukarıda öğrendiğimiz komutlarla ve onlar dışında bir kaç farklı komutla genel olarak yapabileceğimiz işlemleri baştan sona anlatır şekilde Git ile alacağımız actionları sizlere gösterip anlatacağım.

1. Local Düzenleme ve Değişiklikleri Discard/Geri/İptal Etmek

git checkout -- <file_path>
# discard specific file change
# Belirli bir değişikliği geri almak
git checkout -- .
#
discard all unstaged
# Tüm değişiklikleri geri almak
git checkout <commit>
# discard unstaged changes since <commit>
# Belirli bir commite kadar olan değişiklikleri geri almak

2. Undo local commits

# discard staged and unstaged changes since the most recent commit.
# Tüm stages ve unstaged commit değişikliklerini en güncel commite kadar geri almak
git reset HEAD~1
git reset --hard HEAD~1

3. Edit a commit message

# add your staged changes to the most recent commit
# staged changeslarını en güncel commite ekle
git commit --amend
git commit --amend -m "New message"

4. Delete local branch / Localdeki branchi silmek

# Delete branchname if it is already merged
# merge olan brach’i silmek
git branch -d branchname

# Force delete branchname
# Branchi force kullanarak silmek
git branch -D branchname

5. Delete remote branch / Uzakta ki branchi silmek

git push --delete origin branchname
git push origin :branchname

6. Reverting pushed commits / Pushlanmış commiti geri almak

# reverts the commit with the specified id
# Belirli Commit Idsi ile geri döndürme yapmak
git revert c761f5c

# reverts the second to last commit
# Son commiti geri alır ve en sondan 2. commiti son commit yapar
git revert HEAD^

# reverts a whole range of commits
# aralıktaki bütün commitleri geri alır
git revert develop~4..develop~2

# undo the last commit, but don't create a revert commit
git revert --no-commit HEAD = git revert -n HEAD

7. Avoid repeated merge conflicts / Tekrarlanan merge conflictlerini önlemek

git config --global rerere.enabled true

8. Find the commit that broke something after a merge / Merge işlemi sonrası birşeyleri bozan commiti bulmak

Tracking down the commit that introduced a bug after a big merge can be quite time-consuming. Luckily git offers a great binary search facility in the form of git-bisect. First, you have to perform the initial setup:

Büyük bir birleştirmeden sonra bir hataya neden olan işlemin izini sürmek oldukça zaman alıcı olabilir. Neyse ki git git-bisect biçiminde harika bir ikili arama olanağı sunuyor. İlk olarak, ilk kurulumu gerçekleştirmelisiniz:

# starts the bisecting session
# bisectin sessionunu başlatın
git bisect start

# marks the current revision as bad
# Mevcut revizyon yani düzenlemeyi kötü olarak işaretleyin
git bisect bad

# marks the last known good revision
# Son bilinen iyi revizyonu iyi olarak işaretleyin
git bisect good revision

After this, Git will automatically check out a revision halfway between the known “good” and “bad” versions. You can now run your specs again and mark the commit as “good” or “bad” accordingly.

Sonra Git, “good” ve “bad” revizyonları arasından bir revizyonu otomatik olarak alıp kontrol edecektir. Artık özelliklerimizi tekrar çalıştırabilir ve kaydetmeyi buna göre “good” veya “bad” olarak aşağıda ki gibi işaretleyebilirsiniz.

# or git bisec bad
# yada git bisec bad
git bisect good

This process continues until you get to the commit that introduced the bug.
Bu işlem hataya sebep olan bugu alana kadar böylece devam edecek

9. Filter branch

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch secrets.txt' \
--prune-empty --tag-name-filter cat -- --all

This will remove the file secrets.txt from every branch and tag. It will also remove any commits that would be empty as a result of the above operation.

Bu, secrets.txt dosyasını her branch ve tagden kaldıracaktır. Ayrıca, yukarıdaki işlemin bir sonucu olarak boş olacak tüm commitleride kaldıracaktır.

10. Show commit history

# show log / kayıtları göster
git log

# show log in one line / kaytları tek satırda göster
git log --oneline

# show log of last commit / son commit kayıtlarını göster
git log -n1

# show log for a file / belirli bir dosya kayıtlarını göster
git log -p <file_name>

11. Show configuration list / Ayar Listesini Göstermek

# see all setting of your git / tüm git ayarlarını listeler
git config --list

# see only local setting / local git ayarlarını listeler
git config --local --list

# see only global setting / global git ayarlarını listeler
git config --global --list

12. Unset configuration / Ayarları Sıfırlamak

git config --unset key
git config --unset --global key

13. See all file changes locally

git diff

# Show changes for only one file / Belirli bir dosyadaki değişiklikleri görmek
git diff <file_name>

# Displays changes between the working tree and the dev branch
# Çalışma ağacı ve dev arasında ki değişiklikleri göstermek
git diff dev

# Displays changes between the branches master and dev
# master ve dev branchleri arasındaki değişiklikleri göstermek
git diff master..dev

14. For each change to file_name, see who made the change and the time that it happened / Belirlenen dosya adı üzerindeki tüm değişiklikleri kimin ve ne zaman yaptıklarını görmek

git blame <file_name>

15. Show a log of changes to the local repository’s HEAD /Local repositorydeki değişikliklerin bir kaydını göstermek

git reflog

16. Delete all local branches that have been merged into master or develop / master veya develop branchlerine merge edilen bütün local branchleri silmek

[alias]
cu = !git branch --merged | egrep -v \"(^\\*|master|develop)\" | xargs git branch -d

Then type “git cu”, while cu stands for clean up
Sonra “git cu” yaparak giti temizleyin.
git cu

17. Add local file modifications

# Add file/folder to staging area
# stated alanına belirli bir dosya eklemek
git add <file/folder>

# Add all files/folders in all the folders of the repository
# Bütün dosyaları staged alana taşımak
git add . or git add -A

# Add only tracked files/folders
# Sadece takip edilen dosya ve klasörleri staged alana ekleyin
git add . -u

19. Clone git repository

# Clone repo into to specific directory
# Belirli bir yola git reposunu indirmek
git clone <repo_url> <to_directory>

# Clone specific branch
# Sadece belirli bir branchin cloneunu almak
git clone <repo_url> — branch <branch_name>

# Clone a certain level of history’s depth
# Belirli bir history derinliğine göre clone almak
git clone -depth=<depth_level> <repo_url>

20. Working with remote

# List remote connections with URL
# remote bağlantıları listelemek
git remote -v

# Change the remote url
# Remote urli değiştirmek
git remote set-url <remote_name> <new_remote_url>

# Add another remote connection
# Başka bir remote bağlantı eklemek
git remote add <new_remote_name> <new_remote_url>

# Rename connection
# Bağlantıyı yeniden isimlendirmek
git remote rename <remote_old_name> <remote_new_name>

# Delete connection
# Bağlantıyı silmek
git remote rm <remote_name>
or
git remote remove <remote_name>

21. Download the latest code base with fetching

# Fetch all remote repositories
# Bütün uzak repoları fetch yapmak
git fetch — all

# Fetch <remote_name> repository, usually origins
# Belirli bir uzak sunucunun reposunu fetch yapmak, bu genelde origins oluyor.
git fetch <remote_name>

# Fetch a branch from a remote repository
# Belirli bir uzak sunucunun, belirli bir branchini fetch yapmak
git fetch <remote_name> <branch_name>

--

--