web-dev-qa-db-fra.com

erreur git lors de la tentative d'envoi à une branche distante

J'ai cloné la branche principale du référentiel A de git et créé ma propre branche appelée Li . J'ai apporté des modifications il y a quelque temps et j'ai transféré le contenu de Li local vers Li distant.

Maintenant, j'ai extrait certaines mises à jour du maître distant vers ma branche maître locale et de la branche maître locale vers le Li local, et j'essaie de pousser les mises à jour d'un Li local vers un Li distant. courir:

git checkout Li
git Push Origin Li

Je reçois l'erreur suivante:

error: failed to Push some refs to '[email protected]:anodejs/system.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git Push --help' for details.

Notez que ma branche maître locale est mise à jour (j'ai appelé git pull Origin Origin) et fusionnée dans la branche Li locale. Cependant, j’ai ajouté un nouveau fichier à Li, ce qui fait que Li n’est pas identique au maître local (mais cela ne devrait pas avoir d’importance, non?)

Merci, Li

40
user429400

Trouvez le diff avec git fetch && git log Li..Origin/Li. J'imagine que vous avez modifié le format de base ou modifié Li depuis la dernière fois que vous avez poussé, mais cette commande devrait vous indiquer exactement le contenu de la télécommande qui ne se trouve pas dans le local. Vous pouvez trouver ce qu'il y a dedans (mais pas les deux) avec la syntaxe à trois points: git log Li...Origin/Li.

Si le diff est attendu, alors fusionnez simplement avec git merge Origin/Li puis git Push. Si la modification est indésirable, remplacez la télécommande par git Push -f Origin Li. Faites cela uniquement si vous souhaitez abandonner les modifications de la télécommande.

28
Christopher

Les mises à jour ont été rejetées car une extrémité de branche poussée se trouve derrière sa télécommande.

git config --global Push.default current

Essayez la commande ci-dessus pour définir la branche actuelle comme valeur par défaut et 

git Push
36
Siva Kandaraj

lancez les lignes suivantes:

git fetch
git remote Prune Origin

Ils rafraîchissent tous vos arbitres. Regardez alors avec un client graphique Git (par exemple, gitx sur mac) l’arborescence de votre source. Cela devrait aider à découvrir le problème.

Assurez-vous également que votre référentiel n'est pas en lecture seule et que vous avez l'autorisation d'écrire. 

1
Mert

Vous pouvez forcer les modifications Push vers une adresse distante, mais cela peut générer une nouvelle branche distante.

git Push subtree_remote_address.git `git subtree split --prefix=subtree_folder`:refs/heads/branch --force
0
FunkyKat

branche git --set-up-to = = Origin/master

Si vous rencontrez l'erreur lorsque vous êtes sur la branche "maître", essayez la commande suivante:

branche git --set-up-to = = Origin/master

Ou un raccourci clavier: Git Push -u Origin master

0