- Kurulum
- Yapılandırma
- Oluşturma
- Yerel Değişiklikler
- Arama
- Commit Geçmişi
- Branches & Tags(Etiketler)
- Güncelleştirme & Yayınlama
- Merge(Birleştirme) & Rebase
- Geri Alma
- Git Flow
$ git config --list
$ git config --local --list
$ git config --global --list
$ git config --system --list
$ git config --global user.name “[firstname lastname]”
$ git config --global user.email “[valid-email]”
$ git config --global color.ui auto
$ git config --global core.editor vi
<repo>/.git/config
~/.gitconfig
/etc/gitconfig
$ git clone ssh://[email protected]/repo.git
$ git init
$ git init <directory>
$ git status
$ git diff
$ git add .
$ git add -p <file>
$ git commit -a
$ git commit
$ git commit -m 'message here'
git commit --date="`date --date='n day ago'`" -am "Commit Message"
$ git commit --amend
git stash
git checkout branch2
git stash pop
$ git stash apply
- {stash_number}
git stash list
ile elde edilebilir
$ git stash apply stash@{stash_number}
$ git stash drop
$ git grep "Merhaba"
$ git grep "Merhaba" v2.5
$ git log -S "keyword"
$ git log -S "keyword" --pickaxe-regex
$ git log
$ git log --oneline
$ git log --author="username"
$ git log -p <file>
$ git blame <file>
$ git reflog show
$ git reflog delete
Index.txt'den Index.html'e
$ git mv Index.txt Index.html
## Branches & Tags
$ git branch
$ git checkout <branch>
$ git branch <new-branch>
$ git branch --track <new-branch> <remote-branch>
$ git branch -d <branch>
$ git tag <tag-name>
$ git tag -a <tag-name>
$ git tag <tag-name> -am 'message here'
$ git tag
$ git tag -n
$ git remote -v
$ git remote show <remote>
$ git remote add <remote> <url>
$ git fetch <remote>
$ git remote pull <remote> <url>
$ git pull origin master
$ git push remote <remote> <branch>
$ git push <remote> :<branch> (since Git v1.5.0)
ya da
$ git push <remote> --delete <branch> (since Git v1.7.0)
$ git push --tags
$ git merge <branch>
$ git rebase <branch>
$ git rebase --abort
$ git rebase --continue
$ git mergetool
$ git add <resolved-file>
$ git rm <resolved-file>
$ git rebase -i <commit-just-before-first>
Bu metni,
pick <commit_id>
pick <commit_id2>
pick <commit_id3>
bu metin ile değiştirin,
pick <commit_id>
squash <commit_id2>
squash <commit_id3>
$ git reset --hard HEAD
$ git reset HEAD
$ git checkout HEAD <file>
$ git revert <commit>
Belirlediğiniz HEADden bir önceki commite döner ve belirlemiş olduğunuz committe yaptığınız tüm değişiklikleri geri alır:
$ git reset --hard <commit>
Belirlediğiniz HEADden bir önceki commite döner ve belirlemiş olduğunuz committe yaptığınız tüm değişiklikleri untracked dosyalar arasına alır:
$ git reset <commit>
Belirlediğiniz HEADden bir önceki commite döner ve yaptığınız tüm değişiklilkleri local commitlerinizi tutarak geri alır:
$ git reset --keep <commit>
$ git rm -r --cached .
$ git add .
$ git commit -m "remove xyz file"
- Ayarlar
- Başlarken
- Özellikler (Features)
- Bir Yayın Çıkarırken (Release)
- Hata Giderimleri (Hotfixes)
- Komutlar (Commands)
Git flow'u kullanabilmek için öncelikli olarak git kurulumunun yapılması gerekmektedir. Git flow OSX, Linux ve Windows üzerinde çalıştırılabilir.
$ brew install git-flow
$ port install git-flow
$ apt-get install git-flow
$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash
Git flow, kullanmak istediğiniz projede ayarlarınızı özelleştirmek amacıyla başlatılır (initialize).
Bu noktada kafanızda dallarınızı (branches) isimlendirme konusuna ilişkin birçok soru işareti oluşacaktır. Bu bağlamda varsayılan (default) değerleri kullanmanız önerilir.
git flow init
ya da
git flow init -d
Git flow ile yayınlamak üzere olduğunuz projenize ekleyeceğiniz özellikler için yeni dallarda (feature) kodlama yaparsınız. Genel olarak sadece geliştirici repolarında bulunurlar.
git flow feature start MYFEATURE
Bu komut bize develop dalını (branch) temel alan bir özellik dalı (feature) oluşturur. Ve bulunduğumuz dalı develop/MYFEATURE olarak değiştirir.
git flow feature finish MYFEATURE
Bir ekip içerisinde geliştirme mi yapıyorsunuz? O zaman geliştirdiğiniz özelliği bir uzak sunucuya gönderin, böylelikle geliştirdiğiniz özellik diğer kullanıcılar tarafından kullanılabilir.
git flow feature publish MYFEATURE
git flow feature pull origin MYFEATURE
Yeni bir ürünün yayınlanmasına yardımcı olur. Küçük hata giderimleri ve meta-data hazırlığı için kullanılabilir.
Opsiyonel olarak yayınınızın [BASE] noktasından başlamasını sağlayabilirsiniz. Bu commit develop dalında (branch) iken yapılmalıdır.
git flow release start RELEASE [BASE]
Yayınlama dalınız (release branch) oluştuktan sonra bu yöntem ile diğer yazılımcılar tarafından yapılan release commitlerinin de kabul edilmesini sağlayabilirsiniz. Bunu özellik yayınlama (feature publishing) ile kolaylıkla yapabilirsiniz.
git flow release publish RELEASE
Bir sürüm yayınını tamamlarken git dallanmasının (branching) en büyük adımını atarız. Yayınlanma tamamlanırken:
git flow release finish RELEASE
Yayına çıkarılmış bir versiyonda istenmeyen durumlar ortaya çıktığında ani hata giderimi için kullanılır. Hotfixler, master ana dalı (branch)ındaki versiyon numarasını belirten etiketten dallanır (branching).
$ git flow hotfix start VERSION [BASENAME]
Versiyon argümanları yeni hotfix yayınının adını alır. Opsiyonel olarak başlangıç noktası için bir isim özelleştirmesi yapabilirsiniz (basename).
Bir hata giderimi tamamlanırken, develop ve master dalları ile birleştirilir. Ayrıca master dalına (branch) hotfix versiyonunun etiketi eklenir.
git flow hotfix finish VERSION