Domanda

Ho appena tirato un nuovo ramo, fatto alcune modifiche locali, impegnati e cercato di spingere. Mi è stato dato questo errore: ! [rejected] groups -> groups (non-fast forward) Così ho provato una per tirare, ma è stato detto Already up-to-date.

Ecco quello che ottengo tirando poi spingere.

~/dev$ git pull origin groups
Already up-to-date.
~/dev$ git push origin groups
To /mnt/ebs/git/repo.git
 ! [rejected]        groups -> groups (non-fast forward)
error: failed to push some refs to '/mnt/ebs/git/repo.git'

Qualcuno può spiegare come questo può essere accadendo e come posso risolvere il problema?

È stato utile?

Soluzione

Quando avete tirato il ramo, hai usato l'opzione "--track" (al fine di mantenere sezione locale di monitoraggio della filiale remota). Se non l'hai fatto, si può spiegare che il comando "merge" che non funziona.

Si può fare l'unione manualmente:

git fetch
git merge origin/groups

Per confrontare repos locali e remoti, vi suggerisco questo comando (inserirlo in un alias, è utile):

git log --graph --oneline --all --decorate

Si stamperà l'albero della storia del progetto, che mostra le etichette di filiale. Così si vedrà dove il vostro ramo e il ramo divergono origine.

Nota: se si desidera conservare una storia lineare, invece di una "fusione", è possibile fare un "rebase" della vostra filiale locale sul telecomando prima di spingere:

git rebase origin/groups
git push origin groups

Altri suggerimenti

Sono venuto qui con un problema diverso.

Il mio git è stato istituito per spingere tutti i rami. Ero su una FOO ramo, ma è stato anche cercando di spingere padrone, che non era al corrente. Il trucco è stato notando che stava cercando di maestro push:

To git@git.machine:repo
 ! [rejected]        master -> master (non-fast-forward)

I aggiunto il seguente al mio .gitconfig a spingere solo il ramo corrente per impostazione predefinita:

[push]
    default = current

Questa non è una risposta alla domanda posta. Ho avuto un problema diverso con lo stesso messaggio di errore.

La mia filiale locale non ha avuto il ramo a distanza di tirare le modifiche dal configurato correttamente [git pull]. Questo era evidente dal o / p di git remote show origin. Così, ho dovuto usare git pull origin <branch_name> invece di git pull per tirare le modifiche.

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