! maître -> maître (récupère en premier)

Y a-t-il un bon moyen d’expliquer comment résoudre ” ! [rejected] master -> master (fetch first)' ” dans Git?

Lorsque j’utilise cette commande, $ git push origin master affiche un message d’erreur.

 ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@github.com:zapnaa/abcappp.git' 

La réponse est là, git vous dit de chercher en premier.

Probablement quelqu’un d’autre a déjà poussé à maîsortingser et votre engagement est derrière. Par conséquent, vous devez récupérer, fusionner le fichier de modifications, et vous pourrez alors pousser à nouveau.

Si vous ne le faites pas (ou même pire si vous le forcez en utilisant l’option --force ), vous pouvez perturber l’historique des validations.

EDIT: Je vais plus en détail sur le dernier point, car un gars ici vient de donner le très mauvais conseil d’utiliser l’option --force .

Comme git est un DVCS, idéalement, de nombreux autres développeurs travaillent sur le même projet que vous, en utilisant le même référentiel (ou une fourchette). Si vous écrasez avec force avec votre groupe de modifications, votre référentiel ne correspondra pas avec les autres, car “vous réécrivez l’historique”. Vous allez rendre les autres malheureux et le repository va en souffrir. Probablement un chaton dans le monde va pleurer aussi.

TL; DR

  1. Si vous voulez résoudre, récupérez d’abord (puis fusionnez).
  2. Si vous souhaitez pirater, utilisez l’option --force .

Vous avez demandé le premier, cependant. Allez pour 1) toujours, même si vous utiliserez toujours git par vous-même, car c’est une bonne pratique.

essayer:

 git fetch origin master git merge origin master 

Après avoir écrit ce code, j’ai reçu une autre erreur: (sans avance rapide)

J’écris ce code:

 git fetch origin master:tmp git rebase tmp git push origin HEAD:master git branch -D tmp 

Et résolu mon problème

Vous devez utiliser git pull , la commande fait un git fetch et ensuite le git merge .

Si vous utilisez une commande git push origin master --force , vous risquez d’avoir des problèmes à l’avenir.

pull est toujours la bonne approche mais une exception pourrait être lorsque vous essayez de convertir un système de fichiers non-Git en un repository Github. Là, il faudrait forcer le premier engagement.

 git init git add README.md git add . git commit -m "first commit" git remote add origin https://github.com/userName/repoName.git git push --force origin master 

Essayez cette commande git

 git push origin master --force 

ou court de force -f

git push origin master -f

Vous pouvez utiliser la commande suivante: Clone d’abord une nouvelle copie de votre repo, en utilisant le drapeau –mirror:

 $ git clone --mirror git://example.com/some-big-repo.git 

Suivez ensuite les codes en conséquence:

Ajouter un projet existant à GitHub en utilisant la ligne de commande

Même si cela ne fonctionne pas, vous pouvez simplement coder:

 $ git push origin master --force 

ou

 $ git push origin master -f 

Parfois, cela se produit lorsque vous dupliquez des fichiers généralement README sorte de.

Il est probable que quelqu’un d’autre (votre collègue, par exemple) ait mis des commits sur l’ origin/master qui ne se trouvent pas dans votre twig master locale et que vous essayez de transmettre des validations de votre succursale locale au serveur. Dans 99% des cas, en supposant que vous ne voulez pas effacer leur travail d’ origin , vous avez deux possibilités:

2) Fusionnez leurs modifications dans votre twig locale, puis appuyez sur le résultat fusionné. git checkout master git pull # resolve conflicts here git push

(Notez que git pull est essentiellement une git fetch et une git merge dans ce cas.)

1) Rebase votre succursale locale, de sorte que votre collègue semble avoir fait ses commits en premier, puis vous avez effectué vos commits. Cela permet de conserver un historique de validation bien linéaire et d’éviter un “commit de fusion”. Cependant, si vous avez des conflits avec les modifications de votre collègue, vous devrez peut-être résoudre ces conflits pour chacun de vos commits (plutôt qu’une seule fois) dans le pire des cas. Essentiellement, c’est plus agréable pour tout le monde, mais plus d’effort pour vous. git pull --rebase # resolve conflicts here git push

(Notez que git pull --rebase est essentiellement un git fetch et un git rebase origin/master .)