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.