errore git: impossibile inviare alcuni riferimenti al telecomando


450

Per qualche motivo, non posso spingere ora, mentre potrei farlo ieri. Forse ho fatto un casino con le configurazioni o qualcosa del genere.

È questo che succede:

Quando uso il master origin di git push

gitbashscr

Come sono la mia directory di lavoro e il mio repository remoto:

Schermata della cartella dei file di Windows con queste directory: .git, css, js.  E questi file: index.php, readme, setsu.php.  La parola "locale" con una freccia indica la cartella css.  Sotto, screenshot con intestazione "github", e una cartella css e un file index.php


7
sembra che il tuo repository locale non sia sincronizzato con il repository git. hai provato a fare git pull?
— R11G,

1
si, ma non ho idea con la seguente sintassi dopo che git pull dice git pull <remote> <branch>, puoi farmi vedere un esempio di sintassi per git pull?
— leipzy,

1
Fare controllare questa domanda simile - stackoverflow.com/questions/18588974/...
— R11G

3
@ R11G grazie signore! questo link mi ha aiutato a stackoverflow.com/a/18589043/3626672~~V~~singular~~1st
— leipzy

2
Ho avuto quell'errore su un nuovo repository. Questo ha aiutato: stackoverflow.com/a/6518774/2067690
— HumanInDisguise

Risposte:


620

Se il repository GitHub ha visto nuovi commit spinti ad esso, mentre lavoravi localmente, consiglierei di usare:

git pull --rebase
git push

La sintassi completa è:

git pull --rebase origin master
git push origin master

Con Git 2.6+ (settembre 2015), dopo averlo fatto (una volta)

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

Un semplice git pullsarebbe abbastanza.
(Nota: con Git 2.27 Q2 2020 , merge.autostashè disponibile anche un pull normale, senza rebase)

In questo modo, verrai riprodotto (la --rebaseparte) commessa dal tuo locale in cima al nuovo aggiornamento origin/master(o origin/yourBranch:) git pull origin yourBranch.

Vedi un esempio più completo nel capitolo 6 Tirare con rebase del Git Pocket Book .

Consiglierei un:

# add and commit first
git push -u origin master

Ciò stabilirebbe una relazione di tracciamento tra la filiale principale locale e la sua filiale a monte.
Dopodiché, qualsiasi spinta futura per quel ramo può essere fatta con un semplice:

git push

Vedi " Perché devo spingere esplicitamente un nuovo ramo? ".


Dal momento che l'OP ha già ripristinato e rifatto il commit sopra origin/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

non ce ne bisogno pull --rebase .

Nota: git reset --mixed origin/masterpuò anche essere scritto git reset origin/master, poiché l' --mixedopzione è quella predefinita durante l'utilizzo git reset.


va bene eseguire il tuo suggerito git pull --rebase ...? perché ho già fatto> git reset - origine / master mixato> git add. > Git commit -m "Questo è un nuovo commit per quello che originariamente progettato per essere un amendmend"> git maestro origine spinta suggerito qui stackoverflow.com/questions/18588974/... btw la risposta sembra utile signore
— leipzy

3
Per me, dovevo solo eseguire "git commit". :(
— Tyler,

Grazie, risolto uno stupido problema con Git LFS, mi sono arreso a dover usare la riga di comando da ora in poi ahah.
— Tyler C

2
Davvero super ... i comandi seguenti hanno funzionato per me ... git reset --mixed origin / master git add. git commit -m "Questo è un nuovo commit per quello che inizialmente avevo pianificato di essere modificato" git push origin master Grazie Grazie @VonC
— Hari Narayanan,

1
Grazie funziona! Stavo cercando ore per questa soluzione!
— Redion Xhepa

97

Qualcuno ha provato:

git push -f origin master

Questo dovrebbe risolvere il problema.

EDIT: Sulla base del commento di @Mehdi di seguito, devo chiarire qualcosa —force pushing. Il comando git sopra funziona in modo sicuro solo per il primo commit. Se c'erano già commit, pull richieste o rami in precedenza, questo reimposta tutto e lo imposta da zero. In tal caso, fare riferimento alla risposta dettagliata di @VonC per una soluzione migliore.


25
Funziona ma male, per favore non usarlo se non sai cosa stai facendo. (probabilmente non sai cosa stai facendo se stai guardando in SO)
— Mehdi

3
Se hai intenzione di provare -f/ --forceè sempre più sicuro usare --force-with-leaseinvece, il che si interromperà se ci sono cambiamenti a valle che sarebbero bloccati dalla spinta. --force-with-leaseè necessario per molte situazioni di ribasatura di tutti i giorni, ma non --forcedovrebbe quasi mai essere necessario.
— Joshua Goldberg,

63

Se hai appena usato git inite hai aggiunto i tuoi file con git add .o qualcosa di simile e hai aggiunto il tuo ramo remoto potrebbe essere che non hai commesso ( git commit -m 'commit message') nulla localmente per spingere sul telecomando ... Ho appena avuto questo errore e quello era il mio problema.


1
mi sono appena imbattuto in questo. Il comando di commit non ha funzionato durante l'aggiunta di git. Ottima scelta. Grazie
— jgritten

1
Grazie uomo! Questo è tutto. Pensavo di aver commesso i miei cambiamenti. Ora git push -u origin master funziona bene.
— tleo

36

Ho avuto lo stesso problema. Stavo ricevendo questo problema perché non avevo fatto alcun commit nemmeno il commit iniziale e stavo ancora cercando di spingere.

Una volta l'ho fatto git commit -m "your msg"e poi tutto ha funzionato bene.


8
Non ha molto senso. La domanda originale riguarda il git locale dietro . In nessun modo "essere dietro" può essere risolto mentre faccio un commit locale!
— GhostCat

Oh, dimentico anche di impegnarmi: p
— Shams Nahid,

Questo è anche possibile che non ti permetterà di spingere con un commit vuoto
— mboy

3
Ho appena avuto questo problema e ho dimenticato di impegnarmi. Il messaggio di errore dovrebbe essere più chiaro
— Ivan Topić il

1
Si applica a me da quando ho ricevuto quel messaggio di errore esatto e questa soluzione ha risolto il mio problema.
— Diego Fortes,

19

Rinomina il tuo ramo e poi premi, ad esempio:

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

Questo ha funzionato per me.


1
ha funzionato, ma per favore spiega perché dovremmo farlo
— kanlukasz l'

Caspita, in realtà ha funzionato, ma perché? Ho avuto un trattino nel mio nome filiale locale: my-branch_wont_push. Una volta l'ho rinominato in my_branch_wont_push, quindi ha git push -u origin my_branch_wont_pushlavorato per me.
— cdabel il

13

Trovo la soluzione a questo problema nella guida di github.

Puoi vederlo da: Gestione di errori non di avanzamento rapido

Dice:

È possibile risolvere questo problema recuperando e unendo le modifiche apportate sul ramo remoto con le modifiche apportate localmente:

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

Oppure, puoi semplicemente usare git pull per eseguire entrambi i comandi contemporaneamente:

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

1
Questo è il normale processo ogni volta che le cose funzionano come previsto. Non aiuta nulla quando Git pensa che sia già aggiornato come richiesto da @rubyandcoffee.
— Tim

10
  1. git init

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

  3. git remote -v (per il controllo del repository corrente)

  4. git add -A(aggiungi tutti i file)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


prima di spingere il codice devi estrarre dal repository
— James Siva l'

puoi semplicemente scrivere come git pull --rebase origin master
— James Siva,

6

Avevo affrontato lo stesso problema, risolto con i passaggi seguenti.

  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

    (Sopra l'URL https: //User_name@bitbucket.org/User_name/sample.git si riferisce all'URL del progetto bucket bucket)

  5. git push -u origin master

suggerimento

controlla se il tuo account git hub si collega con il tuo git locale usando:

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

4

Se stai usando gerrit, questo potrebbe essere causato da un ID di modifica inappropriato nel commit. Prova a eliminare l'ID modifica e guarda cosa succede.


4

Ricorda di eseguire il commit delle modifiche prima di inviare al repository Github. Questo potrebbe risolvere il tuo problema.


4

Non commettere modifiche iniziali prima di premere causa anche il problema


3

prima di spingere devi aggiungere e confermare le modifiche o fare git push -f origin master


3
git push origin {your_local_branch}:{your_remote_branch}

Se la tua filiale locale e la filiale remota condividono lo stesso nome, puoi omettere il nome della tua filiale locale, basta usare git push {your_remote_branch}. Altrimenti genererà questo errore.


3

Ho seguito i seguenti passaggi e ha funzionato per me.

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

2

Può succedere quando non hai file. Prova a creare un file di testo, quindi segui i seguenti comandi

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

2

Per me il problema era che non avevo aggiunto i file prima del commit.

git add .

git commit -m "your msg"


2

Migliore utilizzo rm -rf .git/hookse poi prova git push


Interessante, mi ha aiutato in un caso, in cui chiaramente non c'erano impegni sull'origine (non è necessario un ribasso).
— pevik

Perché dovresti buttare via tutti i tuoi ganci? forse prima fare un backup?
— MSpreij,

2

Ho creato un repository vuoto in GitHub e ho il mio codice localmente. Ho affrontato lo stesso problema ora, mentre seguivo la sequenza di seguito,

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

IL PROBLEMA È STATO: ho provato a impegnarmi prima di mettere in scena i file che ho.

Quindi dobbiamo mettere in scena i file e quindi impegnarci.

Questa è la sequenza corretta.

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

Poiché eseguo prima la sequenza errata, eseguo solo i comandi seguenti

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

1

Non sono sicuro se questo si applica, ma la soluzione per me è stata quella di impegnare qualcosa localmente dopo git init. Quindi sono passato al telecomando usando --set-upstream ...


1

Creare un nuovo ramo risolto per me:

git checkout -b <nameOfNewBranch>

Come previsto, non è necessario unire poiché la succursale precedente era completamente contenuta in quella nuova.


1
Ho avuto esattamente questo problema, ero su feature22 e lo stavo facendo git push origin feature22-fix, ma feature22-fixnon sono uscito né locale né remoto, quindi ho dovuto prima controllare la filiale localmente, quindi spingere
— Honey

1

Se si sta tentando di inizializzare una directory con un repository GitHub esistente, è necessario assicurarsi di apportare modifiche.

Prova a creare un file:

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

Ciò inserirà un file denominato iniziale che è possibile eliminare in seguito.

Spero che questa risposta aiuti! In bocca al lupo!


1

Devi dare un po 'di forza

Basta spingere - forza.


1

Nel mio caso, è stato il mio huskypacchetto a non consentire il push.

> 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'

Per spingerlo con forza, corri e basta git push origin master --no-verify

Ho corso npm run prepushper vedere l'errore di debug e questa è stata la causa:

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

L' npm installho eseguito e lo ha commesso e il problema è stato risolto.


1

Fai questi

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

Buona programmazione!


1

Prova questo comando git,

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

0

Bene, se nessuna delle risposte di cui sopra sta funzionando e se hai incasinato qualcosa di ssh-addrecente. Provare

ssh-add -D

0

Per utenti sourcetree

Prima esegui un commit iniziale o assicurati di non avere modifiche non impegnate, quindi a fianco di sourcetree c'è un "REMOTES", fai clic destro su di esso, quindi fai clic su "Push to origin". Ecco qua


0

Questo succede a me poiché avevo un tag uguale al ramo e ho provato a spingere il ramo in remoto.


0

Nel mio caso il problema era che (stranamente) non c'era un ramo chiamato master. Ho preso il repository da Github.


0

Stavo spingendo il ramo "evelop" esistente che non avevo ancora verificato, e invece volevo spingere un ramo chiamato "envelope". Quindi il ramo deve essere esistente / checkout alla copia di lavoro locale per spingere ovviamente, quindi quell'errore, a non fare un refuso.

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.