Ana içeriğe geç

Git Push

Okunuşu
git puş
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/git-push

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 push yerel 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.
  • --force başkalarının işini silebilir; --force-with-lease ise 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

Bir branch'i yayımlamak ve güncellemekbash
# 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-lease

Sı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

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar