web-dev-qa-db-fra.com

Les mises à jour Git non-fast-forward ont été rejetées. Fusionner les modifications à distance

Comment résoudre ce problème? J'essaie de commettre mais j'obtiens l'erreur ci-dessous.

git Push Origine monty_svm_dev

To [email protected]:  ! [rejected]        monty_svm_dev -> monty_svm_dev
(non-fast-forward) error: failed to Push some refs to
'[email protected]:/mygit.git' To prevent you from losing history,
non-fast-forward updates were rejected Merge the remote changes before
pushing again.  See the 'Note about fast-forwards' section of 'git
Push --help' for details. root@li409-202:~/mypath#
21
Tampa

faire git pull Origin monty_svm_dev en premier

Ce qui est arrivé, c’est que la télécommande a subi des modifications plus récentes que votre branche. 

Par conséquent, avant de pouvoir Push vos modifications, vous devez d'abord obtenir et fusionner les modifications sur la télécommande.

Vous pouvez le faire soit en faisant un git checkout your_branch, puis: 

git fetch Origin your_branch puis un
git merge your_branch

ou

git pull Origin your_branch # fetch and merge in one operation

Où votre branche est-elle maîtresse ou son nom (semble-t-il être monty_svm_dev dans votre cas, je pense)

Une fois que cela est fait (et tous les conflits résolus), vous pouvez faire un git Push Origin monty_svm_dev

29
Michael Durrant

C'est essentiellement parce que quand vous 

git pull

depuis une branche, deux opérations ont lieu: chercher et fusionner. Désormais, si votre section locale a des modifications, alors git ne vous autorisera pas à la pousser avant de valider vos modifications.

De plus, ce problème apparaît si la télécommande a des modifications qui ne sont toujours pas extraites en local et fusionnées. Répondez si cela ne résout pas le problème

2
Bijendra

Faites un Git pull. Il apportera ensuite les modifications récentes du code de la branche distante dans votre section locale. alors vous êtes en mesure de pousser vos modifications.

0
Dave

Ce problème survient lorsque l'utilisateur oublie d'émettre la commande git Push après la commande git commit. Lorsque vous utilisez git, veillez toujours à suivre les étapes de base.

Dans un cycle idéal lorsque vous travaillez avec git, vérifiez toujours que les commandes git suivantes ont été utilisées de manière séquentielle dans l'ordre suivant:

git pull
git add
git commit
git Push

Personnellement, j’évite la majorité des problèmes publiés à propos de git on stack, car j’associe toujours mes activités de commande git à la séquence ci-dessus.

J'ai créé un acronyme pour m'assurer de ne pas oublier. J'espère que cela peut être utile au lecteur, à savoir:

pacp (le lire comme suit: pack Push où (p = git Push, a = ajout de git, ck = validation de git, push = git de push).

Ma façon de mémoriser le git Push, ajouter, commettre, tirer est:

get pack Push (ce qui signifie: git le pack puis Push). 

En résumé, rappelez-vous de "git" le pack puis "Push".

Résoudre les problèmes: J'aimerais ajouter les commandes de récupération les plus utilisées:

git checkout -- path/to/file/fileName.something #undo changes in file

Ce qui précède annule les modifications apportées à un fichier ... similaire peut être appliqué à plusieurs fichiers en utilisant * pour le nom de fichier, de même peut être appliqué à plusieurs répertoires séparés par un espace.

git reset filename.txt 

Ce qui précède supprime le fichier de l'étape ... après cette commande, nous pouvons git commit en toute sécurité et git ne commettra que les fichiers dans lesquels nous nous trouvons. stage qui signifie que le fichier "filname.txt" ne sera pas validé)

git pull Origin your_intended_branch

Les modifications sont fusionnées avec les dernières de your_intended_branch, ce qui fusionne les modifications que vous avez validées mais que vous n'avez pas envoyées. Une fois que tout va bien, il suffit de faire le Push:

git Push 
0
Nirmal