413 votes

Erreur Git lors de la tentative de push -- hook pré-réception refusé

Lorsque j'essaie de pousser une modification que j'ai commitée, j'obtiens l'erreur suivante ...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

Qu'est-ce qui se passe ?

10 votes

Qu'est-ce qu'il y a dans le crochet de pré-réception de mycogit ?

0 votes

Vous n'essayeriez pas de pousser de gros fichiers sur github, n'est-ce pas ?

0 votes

Pour info : aujourd'hui, tous mes collègues ont reçu ce message d'erreur, nous avons finalement décidé de redémarrer notre serveur Stash et cela s'est arrangé comme par magie. Nous n'avons aucune idée de ce qu'était le problème.

225voto

Alexander Gladysh Points 9554

Vous devriez demander à la personne qui maintient le dépôt à l'adresse suivante git@mycogit/cit_pplus.git .

Vos commits ont été rejetés par le pre-receive crochet de ce repo (c'est un script configurable par l'utilisateur qui est destiné à analyser les commits entrants et à décider s'ils sont suffisamment bons pour être acceptés dans le repo).

Il est également judicieux de demander à cette personne de mettre à jour l'accroche, afin d'y imprimer les raisons du rejet.

Si le responsable est vous-même, il semble que vous ayez un problème avec votre configuration du côté du serveur. Veuillez alors partager plus d'informations.

11 votes

Dans mon cas, BitBucket a validé le contenu du message de validation, en le confrontant aux tickets JIRA, qui étaient hors ligne à ce moment-là.

1 votes

Donc, quand il a été mis en ligne, il a été réparé ?

12 votes

Dans mon cas, il s'agissait d'une incompatibilité entre le nom d'utilisateur avec lequel les commits ont été générés et le nom d'utilisateur dans BitBucket. Je n'étais pas autorisé à mettre à jour le nom d'utilisateur BitBucket, j'ai donc dû réinitialiser mes commits et les commiter à nouveau avec le nom d'utilisateur mis à jour. Vous pouvez mettre à jour le nom d'utilisateur git avec cette commande git config user.name 'UpdatedUserName'

113voto

ozkary Points 2020

La taille du fichier est importante. Il y a une limite de ~120MB pour un seul fichier. Dans mon cas, .gitignore en utilisant Visual Studio avait le fichier listé, mais le fichier a quand même été validé. En utilisant le git cli, nous pouvons obtenir des informations plus détaillées sur l'erreur.

Le crochet de pré-réception refusé était le résultat du gros fichier. En gros, on valide le push.

Pour le résoudre, j'ai supprimé le dernier commit en utilisant :

git reset --soft HEAD~1

J'ai ensuite exclu le fichier du commit.

Note : Utilisez HEAD~N pour revenir au nombre N de commits précédents. (i.e. 3, 4) Utilisez toujours le commutateur --soft pour maintenir les changements dans le dossier

J'espère que cela vous aidera.

0 votes

Cela m'a aidé car mon problème était qu'un fichier dump SQL non désiré (155 mb de taille de fichier) était poussé (par accident).

3 votes

La taille limite des fichiers dépend de votre fournisseur d'hébergement. GitHub a une limite à peu près de cette taille, pour d'autres cela varie, et le git auto-hébergé n'a naturellement pas de telles limites.

1 votes

Que faire si vous avez déjà plusieurs commits après le push refusé ? C'est mon cas, j'ai un gros fichier non désiré (627MB) dans l'un des commits précédents avant d'essayer de pousser vers le repo.

104voto

ThiefMaster Points 135805

Je parierais que vous essayez une poussée non rapide et que le crochet la bloque. Si c'est le cas, exécutez simplement git pull --rebase avant de pousser pour rebaser vos changements locaux sur la base de code la plus récente.

0 votes

C'est génial. Maintenant je peux à nouveau pousser et tirer, mais avant cela je dois définir en amont comme git branch --set-upstream-to=origin/myBranch . +1 pour votre réponse.

0 votes

Dans un nouveau dépôt, j'ai poussé une branche (pas master), puis je l'ai rebasée et j'ai eu l'erreur pendant le push. Je n'ai pas trouvé de web-hooks. J'ai exécuté git pull --rebase J'ai dû rebaser à nouveau et j'ai pu pousser la branche. Finalement, j'ai constaté que ma branche était protégée.

59voto

Dave de Jong Points 16

Dans mon cas, j'ai reçu ce message parce que la branche était marquée comme "Protégée" dans GitLab.

5 votes

Voir stackoverflow.com/a/28832644/2914140 ou projet GitLab > Paramètres > Dépôt, puis Protected Branches pour le trouver.

35voto

flahsy Points 249

Cela peut être dû au fait que vous n'avez pas le droit d'accès pour pousser un commit vers une branche telle que master . Vous pouvez demander au mainteneur de vous donner le droit de pousser des commits.

0 votes

Je pense que c'est correct, mais ce qui est intéressant, c'est que VS semble essayer de pousser vers la branche parente et non vers le nom de la branche réelle sur le site distant. Ainsi, si la branche parente est protégée, cela semble se produire, mais il ne semble pas y avoir de moyen de corriger cela dans VS et vous devez passer à la ligne de commande.

0 votes

Oui, cela a résolu mon problème.

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