Domanda

Mi arrendo! Ogni volta che provo a spingere ottengo uno stupido:

! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

Il nostro team ha una nuova configurazione git. Invece di creare filiali private, ora ho forkato il nostro repository principale (su github) per creare la mia copia.

Ad un certo punto quello che ho fatto è stato:

$ git fetch upstream master:upstreammaster

Quindi ecco la mia configurazione attuale ::

$ git branch
master
* upstreammaster

$ git remote -v
origin  git@github.com:userX/projectX.git
upstream    git@github.com:companyX/projectX.git

dove userX è il mio repository privato.

Quindi vado e apporto alcune modifiche al mio ramo upstreammaster e al PULL da " upstream master " ;. Tutto si fonde e cose:

$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
 * branch            master     -> FETCH_HEAD
Merge made by recursive.
stuff                      |  165 ++++++++++++--------
stuff                      |   35 ++--
stuff                       |  107 ++++++++++---
stuff                       |  105 ++++++++++---
stuff             |   24 ++--
stuff               |    9 +-
stuff                   |   53 +++----
stuff            |   44 +++---
stuff              |   52 +++----
stuff |   32 +----
stuff          |    4 +-
 stuff             |  138 ++++++++---------
stuff     |   58 ++++----
stuff    |  115 ++++++++------
stuff          |    5 +-
stuff                       |   39 ++---
stuff                        |   28 ++--
 17 files changed, 560 insertions(+), 453 deletions(-)

ma poi quando provo a fare:

$ git push upstream master
To git@github.com:companyX/projectX.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

Qualsiasi aiuto sarebbe molto apprezzato! Se hai bisogno di chiarimenti, chiedi, ti risponderò!

È stato utile?

Soluzione

Quando fai una push, prova a specificare refspec per il master upstream:

git push upstream upstreammaster:master

Altri suggerimenti

Jarret Hardie è corretto. In alternativa, unisci nuovamente le modifiche in master e poi prova a premere. Per impostazione predefinita, git push invia tutti i rami con nomi corrispondenti sul telecomando e nessun altro. Quindi queste sono le tue due scelte: specificalo esplicitamente come ha detto Jarret o torna a un ramo comune e poi spingi.

Di questo si è parlato nella mail list di Git ed è chiaro che questo comportamento non cambierà presto - molti sviluppatori fanno affidamento su questo comportamento nei loro flussi di lavoro.

Modifica / Chiarimento

Supponendo che il tuo ramo upstreammaster sia pronto per essere inviato, puoi farlo:

  1. Copia le modifiche dall'upstream.

    $ git pull upstream master

  2. Passa al mio ramo principale locale

    $ git checkout master

  3. Unisci le modifiche in da rebase

    $ git merge upstreammaster

  4. Aumenta le mie modifiche

    $ git push upstream

Un'altra cosa che potresti fare prima di spingere è git rebase upstream/master le tue modifiche contro upstream / master in modo che i tuoi commit siano tutti insieme. Puoi farlo come un passaggio separato tra # 1 e # 2 sopra (git pull --rebase upstream master) oppure puoi farlo come parte del tuo pull (<=>)

Per prima cosa, cerca di estrarre dallo stesso refspec che stai cercando di spingere.

Se non funziona, puoi forzare un git push usando git push -f <repo> <refspec>, ma fai attenzione: questo metodo può causare l'eliminazione dei riferimenti nel repository remoto.

Primo utilizzo

git pull https://github.com/username/repository master

e poi prova

git push -u origin master

Il tuo repository è " upstream " un repository nudo? Ho avuto lo stesso errore, ma quando cambio a nudo non si verificano più.

Se la richiesta push viene mostrata Rifiutata, prova prima a estrarre dal tuo account github e poi prova a spingere.

Esempio:

Nel mio caso stava dando un errore-

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.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 integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

**** Quindi quello che ho fatto è stato - ****

$ git pull
$ git push

E il codice è stato inserito correttamente nel mio account Github.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top