Github'da yeni kod gönderme sorunu


146

Github'da şu anda sadece Readme.md dosyası olan yeni bir depo oluşturdum.

Bu depoya göndermek istediğim yeni oluşturulmuş bir RoR projem var. Aldığım hatayla birlikte bunu yürütmek için Terminalimde verdiğim komutlar aşağıdadır.

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

Daha sonra kullanıcı adımı ve şifremi girdim

git push -u origin master

Hata ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Kodumu bir Github deposuna ilk kez gönderiyorum ve hatalar yüzünden kayboldum. Burada sorulan birkaç soruyu daha araştırdım, ancak hiçbirinde ilk seferinde sorun olmadı.


Yanıtlar:


168

Oluşturduğunuz zaman GitHub'dan üzerinde depo , bir yaratılmış README.md olduğunu yeni taahhüt .

Yerel deponuz bu commit hakkında henüz bilgi sahibi değil. Dolayısıyla:

Uzaktan kumanda, yerel olarak sahip olmadığınız işleri içerdiğinden güncellemeler reddedildi.

Bu tavsiyeye uymak isteyebilirsiniz:

git pullTekrar basmadan önce uzaktan değişiklikleri (örneğin, ' ') birleştirmek isteyebilirsiniz .

Yani:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master

3
Yaptığım şey git pull origin master önce sonra tekrar itmek.
Bagusflyer

14
Bazı durumlarda fatal: refusing to merge unrelated historiesböyle bir durumda bir alabilirsiniz, gönderirsiniz git pull --allow-unrelated-histories origin masterve sonra yukarıdaki cevaba göre
itersiniz

1
Benim için çalışmıyor. uzak: İtme reddedildi. uzak: uzak: refs / Heads / master: ...: xxx işlemcisi adı bekleniyordu ancak yyy bulundu. Git config --global user.email yyy yapıyorum ve hala tanımıyor. Hiçbir şeyi zorlayamazsınız. !!!
Baruch Atta

283

Bu ilk dokunuşunuzsa, uzaktan kumandadaki geçmişi umursamayabilirsiniz. Daha sonra, uzaktaki herhangi bir mevcut veya farklı çalışmanın üzerine yazmanızı önlemek için git'in yaptığı denetimleri atlamak için bir "zorla itme" yapabilirsiniz. Çok dikkatli kullanın!

sadece değiştir

git push **-u** origin master

bunu böyle değiştir!

git push -f origin master

5
Bu, önce github'a koyduğum benioku dosyamı sildi. Görünüşe göre bunu yeniden yapmam gerekiyor.
jack boş

3
-f zorlar ve kod zaman çizelgesini
bozabileceğine

Bu kötü bir yol, bana bir soruna neden oldu, benim tarafımdan yaratılmamış olan beni oku'yu sildi, şimdi bakıcıyı aramalıyım, ona aptal olduğumu söyle, özür dilerim beni tekrar oku. :(
Mohammad Elsayed

63

⚡️ KOLAY: İhtiyacınız olan tek şey zorunlu bir itmedir. Çünkü readme.mdGithub'da dosya oluşturmuş ve henüz çekmemiş olabilirsiniz .

git push -f origin master

Ve işte bir GIF.

git push -f kaynak ana

⚠️ DİKKAT : Kullanmak force, aynı projedeki diğer insanların geçmişini değiştirebilir. Temel olarak, bir dosyanın herkes için silinmesini önemsemiyorsanız, devam edin. Özellikle projedeki tek geliştiriciyseniz.


1
Bu yaklaşımın, bu depodaki diğer kullanıcıların zaten getirdiği geçmişi değiştirdiğini unutmayın. git push -f origin masteroluşması iyi bir alışkanlık değil.
Johnsyweb

1
Bu çözüm pushing commit'i çözebilir, ancak aynı zamanda tüm geçmiş taahhütleri de kaldırabilir !.
twenk11k

2
Github noobs'a dikkat edin ... GitHub aracılığıyla bir Readme.md oluşturduysanız, bu komut yeni değişikliklerinizi uygularken BT'yi KALDIRACAKTIR.
daCoda

Çoğunlukla insanların buraya gelmesinin nedeni budur. -fetiketi dosyaları kaldırır ve dikkatli kullanılmalıdır.
Ahmad Awais

34

Şu komutla zorunlu bir itme yapın:

git push -f origin master

10
Bunun, istenebilecek veya olmayabilecek geçmişteki taahhütleri silebileceğini unutmayın
Crashalot

8

Readme.md dosyasını github tarafından sağlanan arabirim üzerinden eklediğinizi varsayarsak, benioku henüz yerel klasörünüzde değildir. Bu nedenle, uzak depoya göndermeye çalıştığınızda, bir hata alırsınız, çünkü yerel deponuzda benioku dosyası eksiktir - tabiri caizse "zamanın gerisindedir". Bu nedenle, hata mesajında ​​önerildiği gibi, önce "git pull" deneyin. Bu, benioku'yu uzak depodan çekecek ve yerel dizininizle birleştirecektir. Bundan sonra, uzak depoya itme konusunda hiçbir sorun yaşamazsınız (gönderdiğiniz komutlar benim için geçerli görünüyor).


7

Bu, başlangıçta itmeye çalıştığınızda gerçekleşir çünkü GitHub deponuzda readMe.md veya yerel deponuzda olmayan başka herhangi bir şey var. Öncelikle github deponuzun ilgisiz geçmişini birleştirmeniz gerekir.

git pull origin master --allow-unrelated-histories

daha sonra bunu kullanarak diğer dosyaları depodan (readMe.md veya herhangi biri) alabilirsiniz.

git pull origin master

Daha sonra

git push -u origin master

Şimdi tüm değişiklikleri Github deposuna başarıyla gönderiyorsun. Git konusunda uzman değilim ama bu adımlar her seferinde benim için çalışıyor.


5

Değişikliklerinizi bir süredir yapmadığınızı düşünürsek, belki bunu yapmak sizin için işe yarayabilir.

git add files
git commit -m "Your Commit"
git push -u origin master

Bu benim için çalıştı, umarım senin için de işe yarar.


4

Git komutunu izleyerek verileri yerel dizininizden uzak git deponuza aktardığınızda bu hata oluşur: git push -u origin master

Yerel dizin ve git uzak dizinin dosyaları çakıştığından.

Çözüm :

Tüm dosyaları aşamaya kaydettikten sonra aşağıdaki adımları izleyin.

  1. Uzak depodaki dosyaları yerel çalışma dizini ile çakıştığı için alın.

    • git pull <remoter-url> <branch-name>
  2. Değişiklikleri yeniden uygulayın.

    • git add -A
    • git commit -m ‘<comment>'
  3. Kaydedildikten sonra her iki dizinle birleştirme dosyalarını kullanabilirsiniz

    • git push -u origin master

Bu sorunu çözecektir. Teşekkürler.


3

GUI'de mac için git'i kullanırsanız, önce Respository-> Pull veya "comm + shift + p" ile "git pull" öğesini seçebilir, ardından kaynağı yayınlayabilirsiniz.


1

Benzer bir sorun yaşadım ... Bunu şu şekilde çözdüm (git uzmanı değilim, bu yüzden doğru çözüm olup olmadığını bilmiyorum, ama benim için çalıştı):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master

0

Bu hatayla bir saatten fazla uğraştım! Bunu çözmeme yardımcı olan şey aşağıdadır. Tüm bunlar, çalışma dizinim sistemime klonladığım repo iken.

Mevcut deponuza dosya ekliyorsanız ** 1. Depoma eklediğim her şeyi GitHub klasörüme çektim:

git çekme


Çıktı was- bazı benioku dosyası dosya1 dosya2

  1. Yeni dosyalarımı (göndermek istediğim dosyalar) klonlanmış depoma (GitHub repo) kopyaladım (sürükle ve bırak). Bu depoyu aldığınızda eski ve yeni dosyalarınızı görmelisiniz.

Örneğin. bazı benioku dosyası dosya1 dosya2 yeni dosya1 yeni dosya2

  1. git "yenidosya1" "yenidosya2" ekle

  2. [isteğe bağlı] git durumu bu, eklemek istediğiniz dosyaların düzgün bir şekilde hazırlanıp hazırlanmadığını veya çıktı alınmadığını garanti eder.


Şube yöneticisinde Şubeniz 'menşe / ana' ile güncel. Gerçekleştirilecek değişiklikler: (aşamayı kaldırmak için "git reset HEAD ..." kullanın)

    new file:   newfile1
    new file:   newfile2

5.git commit -m "vermek istediğiniz açıklama" 6.git push

Ve tüm yeni dosyalarım eskileri ile birlikte depomda görüldü.


0

Daha basit bir cevap, README.MD dosyasını bilgisayarınızdan GitHub'a manuel olarak yüklemektir. Benim için çok iyi çalıştı.


0

Dallar seçeneklerini kullanıyorum ve ardından "uzak / kaynak" klasörüne sağ tıkladıktan sonra "uzaktaki dalları sil" seçeneğine tıklıyorum, aşağıdaki resme bakın:

görüntü


0

Azure Git'te bu hatayı aldım ve bu sorunu çözdü:

git fetch
git pull
git push --no-verify
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.