git hatası: bazı referansları uzaktan kumandaya gönderemedi


450

Nedense, şimdi itemiyorum, oysa bunu dün yapabilirim. Belki ben yapılandırmalar ya da bir şey ile berbat ettim.

Olan şey budur:

Git push origin master'ı kullandığımda

gitbashscr

Çalışma dizinim ve uzak depo neye benziyor:

Bu dizinlere sahip Windows dosya klasörünün ekran görüntüsü: .git, css, js.  Ve bu dosyalar: index.php, benioku, setsu.php.  Ok ile "yerel" kelimesi css klasörünü gösterir.  Aşağıda, "github" başlıklı ekran görüntüsü ve bir css klasörü ve index.php dosyası


7
yerel repo git repo ile senkronize değil gibi görünüyor. git pull yapmaya çalıştın mı?
R11G

1
evet, ama git pull sonra aşağıdaki sözdizimi ile ilgili hiçbir fikrim yok git pull <remote> <branch> diyor, git pull için örnek bir sözdizimi görmeme izin verebilir misiniz?
leipzy

1
Bu benzer soruyu kontrol edin - stackoverflow.com/questions/18588974/…
R11G

3
@ R11G teşekkür ederim efendim! Bu bağlantı bana yardımcı oldu stackoverflow.com/a/18589043/3626672
leipzy

2
Bu hatayı yeni bir repoda aldım. Bu yardımcı oldu: stackoverflow.com/a/6518774/2067690
HumanInDisguise

Yanıtlar:


620

GitHub repo yeni taahhütler gördüyse, yerel olarak çalışırken şunları kullanmanızı tavsiye ederim:

git pull --rebase
git push

Söz diziminin tamamı:

git pull --rebase origin master
git push origin master

Git 2.6+ (Eylül 2015) ile, yaptıktan sonra (bir kez)

git config --global pull.rebase true
git config --global rebase.autoStash true

Basit bir git pullşey yeterli olur.
(Not: Git 2.27 Q2 2020 ile , merge.autostashnormal çekmeniz için, rebase olmadan da mevcuttur)

Bu şekilde, (tekrar ediyorum --rebaseyeni güncellenmiş üstünde yerel hareketin parçası) origin/master(veya origin/yourBranch: git pull origin yourBranch).

İçinde daha eksiksiz bir örneğe bakın rebase ile bölüm 6 Pull ait Git Cep Kitabı .

Ben tavsiye ederim:

# add and commit first
git push -u origin master

Bu, yerel ana dalınız ve yukarı akış kolu arasında bir izleme ilişkisi kuracaktır.
Bundan sonra, bu dal için gelecekteki herhangi bir itme basit bir şekilde yapılabilir:

git push

Bkz. " Neden açıkça yeni bir şube göndermem gerekiyor? ".


OP zaten sıfırlandığından ve üstündeki taahhüdünü yeniden yaptığındanorigin/master :

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master

Buna gerek yok pull --rebase.

Not: git reset --mixed origin/masteryazılabilir git reset origin/master, çünkü --mixedseçenek kullanılırken varsayılan seçenektir git reset.


önerilen git pull --rebase'inizi yürütmek uygun mudur? coz zaten yaptım> git reset - karışık kökenli / master> git add. > Git -m işlemek> git push kökenli usta burada önerilen "Bu yeni bir için taahhüt olduğunu Başlangıçta bir İslah olması planlanan neyi" stackoverflow.com/questions/18588974/... btw cevap yardımcı efendim görünüyor
leipzy

3
Benim için sadece "git commit" komutunu çalıştırmam gerekiyordu. :(
Tyler

Teşekkürler, Git LFS ile ilgili aptalca bir sorunu düzelttim, bundan sonra komut satırını kullanmak zorunda kaldım haha.
Tyler C

2
Gerçekten süper .. aşağıdaki komutlar benim için çalıştı ... git reset - karışık kökenli / master git add. git commit -m "Bu, aslında değiştirmeyi planladığım şey için yeni bir taahhüttür" git push origin master Teşekkür ederim @VonC
Hari Narayanan

1
Teşekkürler çalışıyor! Bu çözüm için saatlerce bakıyordum!
Redion Xhepa

97

Biri denedi mi:

git push -f origin master

Bu sorunu çözmek gerekir.

EDIT: @Mehdi'nin aşağıdaki yorumunu temel alarak açıklığa kavuşturmam gerekiyor —force pushing. Yukarıdaki git komutu sadece ilk işlem için güvenli bir şekilde çalışır. Daha önce taahhütler, çekme istekleri veya şubeler varsa, bu tüm bunları sıfırlar ve sıfırdan ayarlar. Öyleyse, daha iyi bir çözüm için lütfen @VonC'un ayrıntılı cevabına bakın.


25
Çalışıyor ama kötü, ne yaptığınızı bilmiyorsanız lütfen kullanmayın. (muhtemelen eğer
Mehdi

3
Bunu deneyecekseniz -f/ --forcekullanmak her zaman daha güvenlidir --force-with-lease, itme ile tıkanacak aşağı yönde değişiklikler varsa iptal eder. --force-with-leasegünlük yeniden düzenleme durumları için gereklidir, ancak --forceneredeyse hiç gerekmemelidir.
Joshua Goldberg

63

git initDosyalarınızı daha önce kullandıysanız git add .veya benzer bir şey eklediyseniz ve uzak dalınızı eklediyseniz, uzaktan kumandaya git commit -m 'commit message'itmek için yerel olarak herhangi bir şey ( ) işlememiş olabilirsiniz ... Bu hatayı aldım ve bu benim konu.


1
sadece bununla karşılaştı. Git komutu git add sırasında çalışmadı. İyi karar. Teşekkürler
jgritten

1
Teşekkürler dostum! Bu kadar. Değişikliklerimi yaptığımı düşündüm. Şimdi git push -u kökenli master çalışıyor.
tleo

36

Aynı problemim vardı. Bu sorunu alıyordum çünkü başlangıçta bile taahhütte bulunmamıştım ve hala itmeye çalışıyordum.

Bir kez yaptım git commit -m "your msg"ve sonra her şey iyi çalıştı.


8
Bu pek mantıklı değil. Orijinal soru, yerel git'in geride kalmasıyla ilgilidir . Hiçbir şekilde "geride kalmak" yerel bir taahhütte bulunarak çözülemez!
GhostCat

Oh da taahhüt etmeyi unutuyorum: p
Shams Nahid

Bu da boş bir
taahhütle itmenize

3
Sadece bu problemi yaşadım ve taahhüt etmeyi unuttum. Hata mesajı daha açık olmalıdır
Ivan Topić

1
Bu tam hata mesajını aldığımdan beri benim için geçerli ve bu çözüm sorunumu düzeltti.
Diego Fortes

19

Şubenizi yeniden adlandırın ve ardından, örneğin:

git branch -m new-name
git push -u new-name

Bu benim için çalıştı.


1
işe yaradı, ama lütfen neden yapmamız gerektiğini açıklayın
kanlukasz

Vay canına, bu gerçekten işe yaradı, ama neden? Benim yerel şube adına bir tire vardı: my-branch_wont_push. Bir kez yeniden adlandırdım my_branch_wont_push, sonra git push -u origin my_branch_wont_pushbenim için çalıştı.
cdabel

13

Github yardımında bu sorunun çözümünü buluyorum.

Şuradan görebilirsiniz: Hızlı ileri olmayan hatalarla ilgilenme

Diyor ki:

Uzak dalda yapılan değişiklikleri yerel olarak yaptığınız değişikliklerle getirip birleştirerek bunu düzeltebilirsiniz:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin branch
# Merges updates made online with your local work

Veya her iki komutu aynı anda gerçekleştirmek için git pull komutunu kullanabilirsiniz:

$ git pull origin branch
# Grabs online updates and merges them with your local work

1
Her şey beklendiği gibi çalıştığında normal bir süreçtir. Git @rubyandcoffee'nin istediği gibi güncel olduğunu düşündüğünde hiçbir şey yardımcı olmaz.
Tim

10
  1. git init

  2. git remote add origin https://gitlab.com/crew-chief-systems/bot

  3. git remote -v (mevcut havuzu kontrol etmek için)

  4. git add -A(tüm dosyaları ekle)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


kodu itmeden önce depodan çekmeniz gerekir
James Siva

sadece git pull gibi yazabilirsiniz
James Siva

6

Aynı sorunla karşılaştım, aşağıdaki adımlarla düzeltildim.

  1. git init
  2. git add .
  3. git commit -m 'Add your commit message'
  4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

    ( URL'nin üstünde https: //User_name@bitbucket.org/User_name/sample.git bit kovası proje URL'nizi ifade eder)

  5. git push -u origin master

ipucu

git hub hesabınızın yerel git ile bağlantı olup olmadığını kontrol edin:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

4

Gerrit kullanıyorsanız, bunun nedeni taahhütteki uygun olmayan bir Değişiklik Kimliği olabilir. Değişiklik Kimliği'ni silmeyi deneyin ve ne olduğunu görün.


4

Github repo'ya gitmeden önce değişikliklerinizi yapmayı unutmayın. Bu, sorununuzu çözebilir.


4

Zorlamadan önce ilk değişiklikleri yapmamak da soruna neden olur


3

göndermeden önce değişiklikleri eklemeniz ve taahhüt etmeniz veya yapmanız git push -f origin master


3
git push origin {your_local_branch}:{your_remote_branch}

Yerel şubeniz ve uzak şubeniz aynı adı paylaşıyorsa, yerel şube adınızı atlayabilirsiniz, sadece kullanın git push {your_remote_branch}. Aksi takdirde bu hatayı atar.


3

Aşağıdaki adımları izledim ve benim için çalıştı.

 rm -rf .git
 git init
 git add .
 git commit -m"first message"
 git remote add origin "LINK"
 git push -u origin master

2

Hiç dosyanız olmadığında olabilir. Bir metin dosyası oluşturmaya çalışın ve aşağıdaki komutları izleyin

git add .
git commit -m "first commit"
git push --set-upstream origin master

2

Benim için Sorun, taahhütten önce dosyaları eklemedim.

git add .

git commit -m "your msg"


2

En iyi kullanım rm -rf .git/hooksve sonra git push deneyin


İlginç bir şekilde, menşe konusunda kesin bir taahhütün olmadığı bir durumda (yeniden pazarlamaya gerek yok) bana yardımcı oldu.
pevik

Neden tüm kancalarını fırlatıyorsun? belki önce bir yedekleme yapabilir?
MSpreij

2

GitHub'da boş bir repo oluşturdum ve kodumu yerel olarak aldım. Şimdi aynı konuyla karşılaştım, aşağıdaki sırayı izlediğim gibi,

git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master

SORUN OLDU: Sahip olduğum dosyaları hazırlamadan önce işlemeye çalıştım.

DOSYALARI AŞAĞIDAKİ VE SONRA KOMİTEYE İHTİYACIMIZ VAR.

Bu doğru sıra.

git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master

İlk önce yanlış diziyi yürüttüğüm için, sadece aşağıdaki komutları çalıştırıyorum

git add .
git commit -m 'Initial Commit'
git push -u origin master

1

Bunun geçerli olup olmadığından emin değilim, ama benim için düzeltme git init'ten sonra yerel olarak bir şey yapmaktı. Sonra --set-upstream kullanarak uzaktan kumandayı ittim ...


1

Benim için çözülen yeni bir şube yaratmak:

git checkout -b <nameOfNewBranch>

Beklendiği gibi, önceki dal tamamen yeni dalda bulunduğundan birleştirmeye gerek yoktur.


1
Bu sorunu tam olarak yaşadım, Feature22'deydim ve yapıyordum git push origin feature22-fix, ancak feature22-fixne yerel ne de uzaklardan çıkmadım , bu yüzden önce şubeyi yerel olarak kontrol etmek zorunda kaldım, sonra itin
Honey

1

GitHub deposuna sahip bir dizini başlatmaya çalışıyorsanız, değişiklik yaptığınızdan emin olmalısınız.

Bir dosya oluşturmayı deneyin:

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

Bu, daha sonra silebileceğiniz initial adlı bir dosya yerleştirir.

Umarım bu cevap yardımcı olur! İyi şanslar!


1

Biraz güç vermelisin

Sadece itme kuvveti yap.


1

Benim durumumda, huskyitmeyi engelleyen benim paketimdi.

> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'

Zorla itmek için koş git push origin master --no-verify

npm run prepushHata ayıklama görmek için koştu ve bu nedeni oldu:

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0

Koş npm installve taahhüt et ve sorun çözüldü.


1

bunları yap

git rm --cached *
git add .
git commit -m"upload"
git push --set-upstream origin master

Mutlu kodlama!


1

Bu git komutunu deneyin,

git push origin master –f
git push origin master --force

0

Yukarıdaki cevapların hiçbiri işe yaramıyorsa ve ssh-addson zamanlarda bir şeyler berbat ettiyseniz . Deneyin

ssh-add -D

0

Sourcetree kullanıcıları için

Öncelikle bir başlangıç ​​taahhüdü yapın veya değişmemiş bir değişiklik olmadığından emin olun, ardından sourcetree'nin yanında bir "UZAKTANLAR" vardır, üzerine sağ tıklayın ve ardından 'Origen to push' seçeneğine tıklayın. İşte böyle.


0

Şube ile aynı etikete sahip olduğum ve şubeyi uzaktan zorlamaya çalıştığım için bu bana geliyor.


0

Benim durumumda sorun şudur ki (garip bir şekilde) master diye bir şube yoktu. Depoyu Github'dan aldım.


0

Henüz ödeme yapmadığım mevcut 'evelop' dalını bastırıyordum ve bunun yerine 'zarf' denilen bir kolu itmek istedim. Bu yüzden şube, elbette itmek için yerel çalışma kopyasında mevcut / ödeme olmalıdır, bu nedenle bu hata, yazım hatası yapmak için değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.