Git Push
- Okunuşu
- git puş
Kısaca
Git push, yerel commit'lerinizi uzak bir depoya yükleyip oradaki ilgili branch'i güncelleyen Git komutudur; böylece başkaları çalışmanızı görüp kullanabilir.
git push nedir?
git push, commit'leri yerel deponuzdan, bir kod barındırma platformundaki ya da şirket sunucusundaki uzak bir depoya gönderir. Push yapana kadar commit'leriniz yalnızca kendi makinenizde bulunur; push sonrasında ekip arkadaşlarınız onları pull edebilir, CI hatları test edebilir ve siz bir pull request açabilirsiniz. Tipik bir komut, 'main branch'imi origin adlı remote'a gönder' anlamına gelen git push origin main'dir.
Yeni bir branch'i ilk kez push ettiğinizde git push -u origin <branch> onu branch'in upstream'i olarak da ayarlar; böylece sonradan düz bir git push veya git pull nereye gideceğini bilir. Git varsayılan olarak yalnızca fast-forward olan bir push'u kabul eder; yani uzak branch'in son commit'i zaten sizin geçmişinizin parçasıdır. Başkası önce push ettiyse Git push'unuzu reddeder ve onların değişikliklerini pull etmeniz, varsa çakışmaları çözmeniz ve yeniden push etmeniz gerekir.
Push yapmak, bir taslağı ortak klasörde yayımlamaya benzer: yapana kadar düzenlemeleriniz özeldir, sonrasında herkes onların üzerine inşa edebilir. Barındırma platformları bunun üzerine kurallar ekleyebilir; örneğin main'e doğrudan push'ları reddedip bunun yerine incelenmiş bir pull request isteyen korumalı branch'ler gibi; sunucu tarafı Git hook'ları da ekip politikalarını çiğneyen push'ları reddedebilir.
Push sıklıkla commit ile karıştırılır. git commit yerelde bir anlık görüntü kaydeder, git push ise zaten var olan commit'leri paylaşır; bu yüzden push'tan önce her zaman commit edersiniz. git push --force ile force push yapmak, başkalarının commit'lerini silecek olsa bile uzak branch'in üzerine sizin sürümünüzü yazar; bu yüzden paylaşılan branch'lerde asla kullanılmamalıdır. Kendi branch'inizi rebase ettikten sonra, görmediğiniz commit'lerin üzerine yazmayı reddeden git push --force-with-lease'i tercih edin.
Önemli noktalar
git pushyerel commit'leri uzak bir depodaki bir branch'e yükler.git push -u origin <branch>yeni bir branch'i yayımlar ve sonraki push ve pull'lar için upstream'ini ayarlar.- Git, fast-forward olmayan push'ları reddeder; önce pull yapın, sonra yeniden push edin.
--forcebaşkalarının işini silebilir;--force-with-leaseise fetch etmediğiniz commit'lerin üzerine yazmayı reddeder.- Commit'ler push edilene kadar yerelde kalır ve tag'ler açıkça push edilmelidir.
Örnek
# Publish a new branch and set its upstream
git switch -c feature/search
git commit -am "Add search endpoint"
git push -u origin feature/search
# Later pushes on the same branch need no arguments
git push
# Rejected because the remote has new commits? Sync, then push again
git pull --rebase
git push
# After rebasing your own branch, overwrite it safely
git push --force-with-leaseSık sorulan sorular
git push'um neden reddedildi?
Genellikle uzak branch'te henüz sizde olmayan commit'ler bulunduğu, yani push'unuzun fast-forward olmayacağı içindir. git pull veya git pull --rebase çalıştırın, çakışmaları çözün ve yeniden push edin; diğer nedenler arasında korumalı branch'ler ve eksik yazma izni vardır.
git push --force ile --force-with-lease arasındaki fark nedir?
--force, üzerinde ne olursa olsun uzak branch'i sizinkiyle değiştirir. --force-with-lease ise önce uzak branch'in hâlâ en son gördüğünüz yerde olup olmadığını kontrol eder ve bu arada biri yeni commit'ler push ettiyse reddeder; böylece onların işini yanlışlıkla silemezsiniz.
Uzak bir branch nasıl silinir?
git push origin --delete <branch> çalıştırın. Bu yalnızca branch'i uzak depodan kaldırır; yerel kopyanızı git branch -d <branch> ile ayrıca silin.
İlgili sayfalar
- Git PullSürüm Kontrolü, s. 17Git pull, uzak bir depodan yeni commit'leri indiren ve bunları hemen mevcut yerel branch'inize entegre eden bir Git komutudur.
- Git RemoteSürüm Kontrolü, s. 19Git remote, deponuzun genellikle bir sunucudaki başka bir kopyasına verilen, origin gibi bir kısa addır; commit'leri oraya push eder, oradan pull edersiniz.
- CommitSürüm Kontrolü, s. 5Commit, Git'te projenin dosyalarının; benzersiz bir kimlik, yazar, zaman damgası ve değişikliği anlatan bir mesajla kaydedilmiş anlık görüntüsüdür.
- BranchSürüm Kontrolü, s. 2Git'te branch, bir özellik ya da düzeltme üzerinde, birleştirene kadar ana kodu etkilemeden çalışmanızı sağlayan bağımsız bir geliştirme hattıdır.
- Pull RequestSürüm Kontrolü, s. 32Pull request, bir branch'teki değişiklikleri başka bir branch'e birleştirme önerisidir; kod birleşmeden önce ekibe inceleme, tartışma ve test alanı sunar.
- RebaseSürüm Kontrolü, s. 33Git'te rebase, bir branch'in commit'lerini başka bir commit'in üzerine yeniden uygular; geçmişi yeniden yazıp merge commit'siz, temiz ve doğrusal kılar.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin