Question

Je viens tiré une nouvelle branche, fait quelques changements locaux, engagés et essayé de pousser. On m'a donné cette erreur: ! [rejected] groups -> groups (non-fast forward) Alors j'ai essayé de tirer, mais on m'a dit Already up-to-date.

Voici ce que je me tirant ensuite pousser.

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

Quelqu'un peut-il expliquer comment cela peut se produire et comment je peux résoudre ce problème?

Était-ce utile?

La solution

Lorsque vous avez tiré la branche, avez-vous utilisé l'option « --track » (afin de vous garder branche locale de suivi à distance de la branche). Si vous ne l'avez pas, il peut expliquer que la commande « fusion » qui ne fonctionne pas.

Vous pouvez faire la fusion manuellement:

git fetch
git merge origin/groups

Pour comparer repo local et à distance, je vous suggère de cette commande (ajouter dans un alias, il est utile):

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

Il imprime l'arbre historique du projet, montrant les étiquettes de branche. Alors, vous verrez où votre branche et la branche de diverger origine.

Remarque: si vous souhaitez conserver une histoire linéaire, au lieu d'une « fusion », vous pouvez faire un « rebasage » de votre branche locale de la télécommande avant de pousser:

git rebase origin/groups
git push origin groups

Autres conseils

Je suis venu ici avec un autre problème.

Mon git a été mis en place pour pousser toutes les branches. J'étais sur une FOO branche, mais il a également essayé de pousser maître, qui n'a pas été mise à jour. L'astuce remarquait qu'il essayait de maître pousser:

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

J'ajouté ce qui suit à mon .gitconfig seulement pousser la branche actuelle par défaut:

[push]
    default = current

Ce n'est pas une réponse à la question posée. J'ai eu un autre problème avec le même message d'erreur.

Ma branche locale n'a pas la branche à distance pour tirer les changements de configuration correctement [git pull]. Cela était évident o / p de git remote show origin. Donc, je devais utiliser git pull origin <branch_name> au lieu de git pull pour tirer les changements.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top