Github "Gli aggiornamenti sono stati rifiutati perché il telecomando contiene lavoro che non hai"


177

Ho creato un nuovo repository, l'ho clonato, aggiunto file alla directory, aggiunti con add -A, commit delle modifiche e quando provo a spingere usando git push <repo name> masterottengo "Gli aggiornamenti sono stati rifiutati perché il telecomando contiene lavoro che non hai".

Questo non sembra avere senso poiché si tratta di un nuovo repository e contiene solo un file Leggimi.

Risposte:


309

Questo succede se hai inizializzato un nuovo repository github con READMEe / o LICENSEfile

git remote add origin [//your github url]

//pull those changes

git pull origin master 

// or optionally, 'git pull origin master --allow-unrelated-histories' if you have initialized repo in github and also committed locally

//now, push your work to your new repo

git push origin master

Ora sarai in grado di inviare il tuo repository a github. Fondamentalmente, devi unire quei nuovi file inizializzati con il tuo lavoro. git pullrecupera e si fonde per te. Puoi anche recuperare e unire se ti va bene.


7
Ho creato un video di YouTube con una spiegazione più dettagliata e due modi suggeriti per evitare questo problema in primo luogo.
Kevin Markham,

16
Per il comando Merge ho bisogno di usaregit pull origin master --allow-unrelated-histories
Luciano Marqueto,

Ottengo "fatale: rifiutare di unire storie non correlate"
Sergi

4
@Sergi trygit pull origin master --allow-unrelated-histories
palerdot

101

L'errore potrebbe derivare dalla diversa struttura del codice che stai eseguendo e da quella presente su GitHub. Crea conflitti che possono essere risolti

git pull

Unisci la risoluzione dei conflitti:

git push

Se confermi che il tuo nuovo codice va bene puoi usare:

git push -f origin master

Dove -fsta per "force commit".


13
'git push -f origin master' -questo aiuta
Saurabh,

4
git push -f sovrascrive la cronologia remota con la cronologia locale, fai attenzione quando la usi. Soprattutto sui repository pubblici.
Andre

updates-were-rejectedsuccede anche se hai apportato modifiche al repository github nel telecomando, ad esempio: hai apportato alcune modifiche al file readme usando github gui. E poi ha provato a spingere il tuo nuovo lavoro su github, mostrerà questo messaggio dicendo che le modifiche che hai fatto in remoto ma non sono presenti localmente.
Deke,

13

Se questa è la tua prima spinta

basta cambiare il

git push <repo name> master

cambiarlo in questo modo!

git push -f <repo name> master

1
Questo elimina i file come inizialmente creati nell'origine. Piuttosto usa un git pullprima per ottenere file remoti e unire il tuo commit allora. Proprio come afferma la risposta accettata
JayJay

@jayjaybricksoft Grazie per il tuo commento. È il primo push, quindi la sostituzione dei file di origine è OK.
Mahyar,


2

Le risposte fornite non hanno funzionato per me.

Avevo un repository vuoto su GitHub con solo il file LICENSE e un singolo commit a livello locale. Ciò che ha funzionato è stato:

$ git fetch
$ git merge --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE

Anche prima che mergetu possa voler:

$ git branch --set-upstream-to origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

0

Ho seguito questi passaggi:

Tirare il maestro:

git pull origin master

Questo sincronizzerà il tuo repository locale con il repository Github. Aggiungi il tuo nuovo file e quindi:

git add .

Conferma le modifiche:

git commit -m "adding new file  Xyz"

Infine, premi il master di origine:

git push origin master

Aggiorna il tuo repository Github, vedrai i file appena aggiunti.


0

Se si utilizza Visual S2019, creare un nuovo ramo locale come mostrato di seguito, quindi inviare le modifiche al repository Filiale locale VS2019

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.