web-dev-qa-db-fra.com

! [rejeté] master -> master (chercher en premier)

Existe-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, un message d'erreur s'affiche.

! [rejected]        master -> master (fetch first)
error: failed to Push some refs to '[email protected]:zapnaa/abcappp.git'
57
Symfony

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

Probablement quelqu'un d'autre a déjà essayé de maîtriser et votre engagement est en retard. Par conséquent, vous devez extraire, fusionner le jeu de modifications, puis vous pourrez à nouveau appuyer sur.

Si vous ne le faites pas (ou même pire, si vous le forcez en utilisant l'option --force), vous pouvez gâcher l'historique de validation.

EDIT: Je vais entrer dans les détails sur le dernier point, puisqu'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 l’un de ses fork). Si vous écrasez de manière forcée avec votre jeu de modifications, votre référentiel ne correspondra pas à celui d'autres personnes, car "vous avez réécrit l'historique". Vous allez rendre les autres malheureux et le référentiel va en souffrir. Probablement un chaton dans le monde pleurera aussi.

TL; DR

  1. Si vous voulez résoudre, commencez par chercher (puis fusionnez).
  2. Si vous voulez 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.

71
linuxbandit

essayer: 

git fetch Origin master
git merge Origin master

Après avoir écrit ce code, j'ai reçu une autre erreur: (non-fast-forward)

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

35
Aurelio A

Vous devriez utiliser git pull, cette commande fait un git fetch et ensuite effectuez le git merge.

Si vous utilisez une commande git Push Origin master --force, vous rencontrerez peut-être des problèmes à l'avenir.

18

Essayez cette commande git

git Push Origin master --force

ou à court de force -f

git Push Origin master -f

9
user1865618

pull est toujours la bonne approche mais une exception peut être lorsque vous essayez de convertir un système de fichiers non Git en un référentiel Github. Là, il faudrait forcer le premier commit.

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
9
J D

Vous pouvez utiliser la commande suivante: Commencez par cloner une nouvelle copie de votre référentiel à l’aide du drapeau --mirror:

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

Puis suivez 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
3
Tanuj Chakraborty

Parfois, cela se produit lorsque vous dupliquez des fichiers, ce qui correspond généralement à README.

2

Il est probable que quelqu'un d'autre (votre collègue, par exemple) a mis des commits sur Origin/master qui ne se trouvent pas dans votre branche master locale et que vous tentez de transmettre des commits de votre branche locale au serveur. Dans 99% des cas, si vous ne voulez pas effacer leur travail de Origin, vous avez deux options:

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

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

1) Rebasonnez votre succursale locale, de sorte qu’il ressemble à ce que votre collègue a fait ses commits en premier, puis vous avez fait vos commits. Cela permet de conserver l’historique des validations de manière agréable et linéaire - et d’éviter une "validation 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. En gros, 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.)

1
Chrispher

Votre erreur peut être due à la branche de fusion.
Suivez juste ceci:

étape 1: git pull Origin master (au cas où vous auriez un message, alors ignorez-le)
étape 2: git add .
étape 3: git commit -m 'your commit message'
étape 4: git Push Origin master

0
divyang hirpara

ce travail pour moi

  1. git init

  2. git add --all

3.git commit -m "nom"

4.git Push Origin master --force

0
Mizanur Rahman

Cela a fonctionné pour moi:

$ git add .
$ git commit -m "commit"
$ git Push Origin master --force
0
Yamuna Bangaru