git commands

init

  • cd /project/path
  • git init

configs

  • git config --global user.name "ad soyad"
  • git config --global user.email "mail@gmail.com"
  • git config --list
  • git config --list --global
  • git config user.name
  • git config user.email

list changes

  • git status
  • git status -s

un/stage

  • git add .
  • git add fileName.txt
  • git add directory/fileName.txt
  • git restore --staged fileName.txt

commit

  • git commit -m 'do commit process'
  • git commit -m "Burası commit başlığımız" -m "Burası içeriğimizin ilk satırı" -m "Burası içeriğimizin ikinci satırı." -m "Bu da son olsun bari"
  • git show commit_hash
    belirttiğimiz commit_hash'e sahip olan commit'in ayrıntılarını gösterir.

branch

  • git branch
    branch'ları listeler
  • git branch --all
    remote'daki branchler ile beraber listeler
  • git branch new-branch
    yeni branch oluşturur.
  • git checkout branch_name
    belirtilen branch'e geçiş yapar.
  • git checkout -b new-branch
    branch oluşturur ve geçiş yapar.
  • git checkout -t remote_branch_name
    remote'da oluşturulan branch'i pull ile local repoya aldıktan sonra üzerinde işlem yapabilmek için remote branch'in ismiyle aynı olan bir branch oluşturur ve yapılan işlemleri pull ettiğimizde remote'daki branch'i günceller
  • git branch -d deleted_branch
    branch'i siler.
  • git branch -D deleted_branch
    büyük D, silmeye zorlar (force). merge yapmadan silmek istiyorsanız force işlemi uygulamalısınız. yani yazdığınız kodları merge edip etmemenizi umursamaz. yazdıklarınız kaybolur.

merge

  • git checkout master
    önce master branch'ine geçiş yapıyoruz.
  • git merge feature_branch
    şimdi ise feature_branch'ini bulunduğumuz branch'a (master) merge ediyoruz. feature_branch'da yapılan tüm değişiklikler master branch'ine gelmiş oldu.
  • git merge --abort
    conflict oluştuğu zaman merge işlemini iptal etmek istersek kullanabiliriz.

rebase

  • git rebase master
    develop branch'ine geçip master branch'ini rebase uygulamak için kullanılır.
  • rebase aborting
    öncelikle "git reflog" ile rebase işleminin başlatıldığı kaydı buluyoruz. daha sonra bir önceki kaydın id'sini kopyalıyoruz. "git reset id" işlemini uygulayarak rebase işlemini iptal edilir.

conflict

  • oluşan conflict'leri çözmek için "sourcetree" veya "vscode" kullanabiliriz.

reset

  • git log --oneline
    commit hash'ini almak için
  • git reset --soft commit_hash
    --soft parametresi yaptığınız değişiklikleri korur ve staged halde tutar. commit mesajını yanlış yazdıysanız bu işlemi uyguladıktan sonra commit mesajınızı yeniden yazıp commit edebilirsiniz.
  • git reset --mixed commit_hash
    --mixed parametresi ile yaptığımız commit'i geri alırız ve yaptığımız değişiklikler staged edilmemiş olarak gelir. yani "git add file_name.txt" komutuyla staged edip commit etmemiz gerekir.
  • git reset --hard commit_hash
    --hard parametresiyle çalıştırırsanız yaptığınız tüm değişiklikleri silerek belirtilen commit'e gidersiniz. zamanda yolculuk yaptırır. kullanması tehlikelidir çünkü yaptığınız önemli bir şey varsa boşa gider. kullanırken DİKKATLİ OLUNUZ.
  • git reset fileName.txt
    stage edilen dosyayı unstaged eder. yani "git add fileName.txt" işleminin tam tersini yapar.
  • git reset --hard HEAD
    yaptığımız tüm değişiklikleri geri alır. örneğin iki tane dosya üzerinde değişiklik yaptık ve bu değişiklikleri geri almak istiyoruz. o zaman bu komutu kullanabiliriz.
  • git restore fileName.txt
    tüm değişiklikleri geri almak yerine sadece bir dosyadaki değişiklikleri geri almak isteyebiliriz. bunun için "restore" sözcüğünü kullanabilir. "git restore ." kullanarak yine tüm dosyalardaki değişiklikleri geri alabiliriz.
  • git checkout commit_hash fileName.txt
    belirttiğimiz commit'teki dosyayı alıp şimdiki haliyle değiştirebiliriz.

revert commit

  • git revert commit_hash
    belirtilen commit'teki değişiklikleri geri alır ve bu işlemin yağıldığına dair yeni bir commit oluşturulur.

tag

  • git tag --list
  • git tag tag_name
  • git tag tag_name commit_hash
  • git tag tag_name -m 'tag message'
  • git show tag_name
  • git tag --delete tag_name
  • git push origin --tags
  • git push origin tag_name

stash

  • git stash
    değişiklik yapılan ancak commit edilmeyen dosyalarımız kaydedilir. başka bir branch'e geçiş yaparken kullanmamız gerekir çünkü git bu değişikliklerin ya commit edilmesini ya da stash ile daha sonra kullanılmak üzere kaydedilmesini ister. biz commit etmeyeceğiz ve başka branch'e geçip daha sonra geri geleceğiz. bu yüzden stash kullanmak durumunda kalırız.
  • git stash push -m "mesajımı buraya yazıyorum"
    mesaj yazarak stash işlemini uygulayabiliyoruz.
  • git stash list
    stash uygulanan çalışmalarımızı listeler.
  • git stash apply stash_index
    stash list ile stash index'ini alıp bu komutu çalıştırırsak kaydettiğimiz çalışmalarımız yeniden aktif hale gelecek.
  • git stash show stash_index
    stash içerisindeki dosyaların durumunu görebiliriz.
  • git stash branch new-branch stash_index
    branch oluşturup belirttiğimiz stash'i kullanmak için kullanılır.
  • git stash pop
    stash işlemi uygulanan çalışmalarımızı geri alır ve stash'den siler.
  • git stash clear
    tüm stash'leri temizler.
  • git stash drop stash_index
    stash uygulanan çalışmamızı siler.

remote

  • git remote
  • git remote -v
  • git pull
  • git pull origin master
  • git push origin master
  • git push -u origin master
  • git push --force origin master
  • git push origin --delete feature/register-page
  • git fetch
  • git fetch --all
  • git fetch --all origin

differents

  • git diff fileName.txt
  • git diff commit_hash

alias

  • git config --global alias.last 'log -1 HEAD'
  • git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
    "git last" komutu bundan sonra "git log -1 HEAD" görevini yerine getirecek. "git last" bize son commitin ayrıntılarını verecektir.

log

  • git log --oneline
  • git log --author="John"
  • git log --author="John|Mary"
  • git log --graph --oneline --decorate
  • git log --pretty=oneline
  • git log --pretty=short
  • git log --pretty=medium
  • git log --pretty=format:"%cn committed %h on %cd"
  • git log --name-status
  • git log --name-status --pretty=oneline
  • git log --after="yesterday"
  • git log --after="2014-7-1" --before="2014-7-4"
  • git log -- foo.py bar.py
  • git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit