https://semver.org/
Bir kısım sürüm atlarsa sağ tarafı sıfırlanır
https://git-scm.com/
https://git-scm.com/
https://git-scm.com/
https://git-scm.com/
Subversion-Style Workflow - Git will not allow you to push if someone has pushed since the last time you fetched
Integration Manager Workflow - number of developers then clone from that repository, push to their own independent repositories, and ask the integrator to pull in their changes
Dictator and Lieutenants Workflow
Guido van Rossum: the author of the Python programming language. "Benevolent dictator for life" (BDFL)
Linus Torvalds, Matz, DHH, Jose Valim
Fedora
Debian-Ubuntu
Windows
Text
cat .ssh/id_rsa.pub
ssh anahtarınızı paylaşmayın!
Bu işlemler için aynı e-posta hesabını kullanın
https://git-scm.com/book/en/v2
https://twitter.com/chacon
git branch -a
git branch -av
git bundle create ~/Desktop/repo.bundle develop
git ls-remote ~/Desktop/repo.bundle # SHA refs/heads/develop şeklinde görülür
git clone /path/to/FILE.bundle -b TARGET_BRANCH /path/to/repo # develop branch’ine clone ettim git clone ~/Desktop/repo.bundle -b develop /tmp/test-repo
git bundle create ~/Desktop/commits.bundle develop ^origin/develop
git bundle verify ~/Desktop/commits.bundle
git fetch ~/Desktop/commits.bundle develop:friends-develop
Acaba 2 commit önceki index.html‘in durumu neydi?
git show REVISON:/path/to/file
git show HEAD~2:index.html # 2 commit önce git show HEAD~1:index.html # son commit
git show 42bc7e2:index.html
.git/config Repository bazında ayar için kullanılır. Sadece bulunduğu repository’i etkiler.
~/.gitconfig Kullanıcı bazında ayarları içerir. Tüm repoları etkiler.
/etc/gitconfig Tüm sistemi kapsayan ayar dosyasıdır. (System-wide)
# kullanıcı bazında git config --global user.name "Kullanıcı Adı" git config --global user.email "kullanici@eposta.com" # repo bazında git config user.name "Kullanıcı Adı" git config user.email "kullanici@eposta.com" # konfigürasyonu göster git config -l
# user.email’i sildik / repo bazında git config --unset user.email # user.email’i sildik / user bazında git config --unset --global user.email
git config --get user.email
git log
git log --graph --decorate --oneline
git config --global alias.logs "log --graph --decorate --oneline"
git log --format='%Cblue%h%Creset %Cgreen%an%Creset %s (%Cred%ar%Creset)'
git config --global alias.logs-pretty "log --graph --format='%Cblue%h%Creset %Cgreen%an%Creset %s (%Cred%ar%Creset)'"
git logs -10 git logs-pretty -10
Renkli log çıktılarında ilk satırı görmüyor ya da kaybediyorsanız bu sistemdeki less komutunun konfigürasyonu ile ilgilidir.
git config --global core.pager "less -FRX"
git log --since="2019-01-01" --until="2019-04-19" --reverse --format="%ad | %h : %s" --date=short
--date
relative : "2 hours ago" local : "Tue Sep 4 23:57:50 2018" (Tarih ayarınıza göre) default : "Tue Sep 4 23:57:50 2012 +0300" iso : "2018-09-04 23:57:50 +0300" rfc : "Tue, 4 Sep 2018 23:57:50 +0300" short : "2018-09-04" raw : "1346792270 +0300"
git shortlog -s -n
Versiyon kontrol altındaki bir dosyayı daha sonradan .gitignore'a eklediniz.
.gitignore’un değiştiğini gördünüz ve git add ile eklediniz. Daha sonra ignore ettiğiniz dosyada değişiklik yaptınız ve halen kontrol altında olduğunu gördünüz.
Bu durumu düzeltmek için;
git rm --cached file.txt
git tag ETİKET # o anki revizyona etiketi’i oluştur # ya da git tag -a ETİKET -m "Mesaj"
git tag # listeleme
Aynı branch gibi çalışan tag’lere de checkout etmek mümkün. Zaten bu versiyonlama durumu da burada işe yarıyor.
git push origin master # ya da git push
current
git config --global push.default current
matching
git config --global push.default matching
upstream (tracking)
git config --global push.default upstream
simple
git config --global push.default simple
Tam işin ortasındasınız ve aniden acil bir durumla karşılaştınız. Bir çok dosyayı da değiştirdiniz ama commit etmek istemiyorsunuz. Ne yapacaksınız?
git stash
Çalışmaya devam edin, işlerinizi tamamlayın ve kaldığınız yere gere dönmek için:
git stash apply
git checkout -b testing_branch 8bab7c4
Reset komutu, yaptığımız herhangi bir committen sonraki bütün commitleri kaldırmaya yarar. İşinize yarayacağını düşündüğüm üç tane parametresi var, bunlardan bahsetmek istiyorum. Bu parametreler: Soft, mixed ve hard.
--soft
Git reset komutuna soft parametresini verip bir commit belirtirseniz eğer, Git bu belirttiğimiz commiti ve sonrasındaki commitleri silecektir, düzenlenmiş dosyalar da Git’e eklenmiş hale gelecektir. Dosyalardaki değişiklikler bozulmayacaktır.
--mixed
Git reset komutuna mixed parametresini verdiğimiz zaman ise Git, bu belirttiğimiz commiti ve sonrasındaki commitleri silecektir. Dosyalarımızdaki değişiklikler gitmeyecek ancak dosyalarımız Git’e eklenmemiş olacaktır, yani untracked hale gelecektir.
--hard
Git reset komutuna hard parametresini verip bir commit belirttiğinizde ise bu belirttiğiniz commiti ve sonrasındaki commitleri tamamen silip dosyalarda yaptığınız değişiklikleri de geri alıyor. Yani yaptığınız her şey uçup gidiyor. Bunu kullanacağınız zamanlarda çok dikkatli olun.
git reset --soft 08d467a
git reset --soft HEAD~1