771 votes

Ne peut pas pousser à github - garde disant besoin de fusion

Je suis nouveau sur github. Aujourd'hui j'ai rencontré un problème lorsque j'essayais de pousser mon code pour github.

Poussant à l'git@github.com:519ebayproject/519ebayproject.git
Pour git@github.com:519ebayproject/519ebayproject.git
 ! [rejeté] master> master (non-avance rapide)
erreur: impossible de pousser des refs 'git@github.com:519ebayproject/519ebayproject.git'
astuce: des Mises à jour ont été rejetées parce que la pointe de votre branche courante est derrière
indice: son homologue distant. Fusionner les modifications distantes (par exemple 'git pull")
astuce: avant de pousser à nouveau.
astuce: Voir la Note sur les fast-forwards' dans 'git push --help" pour plus de détails.

Je n'ai pas poussé quoi que ce soit dans le référentiel encore, pourquoi ai-je besoin de tirer quelque chose?

780voto

Shredder Points 11513

Si vous ne voulez pas fusionner la branche distante dans votre succursale locale (voir les différences avec git diff), et que vous voulez faire une force de pousser, utiliser le poussoir de commande avec -f

git push -f origin <branch>

origin est le nom de votre distance de prise en pension.

Généralement, la commande refuse de mettre à jour à distance ref qui n'est pas un ancêtre de la locale ref utilisé pour le remplacer. Ce drapeau désactive la vérification. Cela peut entraîner le dépôt distant à perdre s'engage; utiliser avec prudence.

244voto

Jake Greene Points 1941

Comme le message l'indique, vous

Fusionner les modifications distantes (par exemple 'git pull")

Utiliser git pull de tirer les dernières modifications sur le dépôt distant à votre dépôt local. Dans ce cas, tirant changements nécessiteront une fusion parce que vous avez fait des changements dans votre dépôt local.

Je vais vous donner un exemple et une image pour expliquer. Supposons que votre pull dernière, de l'origine ou de la direction a été à Commettre B. Vous avez terminé et commis certains travaux (Commit C). Dans le même temps, quelqu'un d'autre a terminé son travail et l'a poussé vers l'origine ou de la direction (Commettre D). Il y aura besoin d'être une fusion entre ces deux branches.

local branch:                         --- Commit C 
                                    /
                                   /
                                  /
origin/branch: Commit A ------ Commit B ---- Commit D

Parce que vous êtes celui qui veut pousser, git vous oblige à effectuer la fusion. Pour ce faire, vous devez d'abord extraire les modifications de l'origine ou de la direction.

local branch:                         --- Commit C -- Commit E
                                    /               /           
                                   /               /             
                                  /               /               
origin/branch: Commit A ------ Commit B ---- Commit D 

Après l'achèvement de la fusion, vous allez maintenant être autorisés à l'avance rapide de l'origine ou de la direction de Commettre E en poussant vos modifications.

Git exige que vous manipulez des fusions-vous car une fusion peuvent conduire à des conflits.

201voto

AYK Points 2116

Avez vous mis à jour votre code avant de pousser ?

Utilisez `` avant que vous appuyez sur n’importe quoi.

Je suppose que vous utilisez `` comme un nom pour votre télécommande.

EDIT : Vous devez tirer avant de pousser, de faire votre dépôt local à jour avant de vous poussez quelque chose (juste au cas où quelqu'un d’autre a déjà mis à jour code sur `` ). Cela aide à résoudre les conflits locaux. J’espère que je suis suffisamment claire

125voto

Prayag Upd Points 3347

Ce qui se passe normalement quand vous git commit et essayez d' git push modifications avant d' git pulling à la branche x.

Flux Normal en tant que ci-dessous,

ÉTAPE 1

git stash vos modifications locales sur cette branche

ÉTAPE 2

git pull origin branchname -v tirer et fusionner localement engage changements sur cette branche, donner à la fusion de certains messages, résoudre les conflits, si tout

ÉTAPE 3

git stash pop stash changements

ÉTAPE 4

git push origin branchname -v modifications fusionnées

Remplacer branchname avec des avec des master pour master de la branche.

35voto

xiatica Points 473

Certains d'entre vous peuvent obtenir cette erreur parce que git ne sait pas quelle branche que vous essayez de pousser.

Si votre message d’erreur comprend également

puis vous pouvez suivre ces conseils très pratiques de Jim Kubicek http://jimkubicek.com/blog/2012/08/16/git-push-current-branch/ pour affecter à la branche par défaut actuel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X