Erreur Git lorsque vous essayez de pousser - le crochet de pré-réception a été refusé


206

Lorsque j'essaie de pousser une modification que j'ai validé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'

Que se passe-t-il?


8
Que contient le hookon mycogit pré-reçu?
rob mayoff

Vous n'essaieriez pas de pousser de gros fichiers vers github, n'est-ce pas?
Adam F

FYI: aujourd'hui, tous mes collègues ont reçu ce message d'erreur, nous avons finalement décidé de redémarrer notre serveur de cache et il a été corrigé comme par magie. Nous n'avons aucune idée de la nature du problème.
T_D

Réponses:


125

Vous devriez demander à celui qui maintient le dépôt à git@mycogit/cit_pplus.git.

Vos validations ont été rejetées par le pre-receivecrochet de ce référentiel (c'est un script configurable par l'utilisateur qui est destiné à analyser les validations entrantes et à décider si elles sont suffisamment bonnes pour être acceptées dans le référentiel).

C'est également une bonne idée de demander à cette personne de mettre à jour le crochet, afin d'imprimer les raisons du rejet.

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


7
Dans mon cas, BitBucket a eu une validation du contenu du message de validation, le confrontant aux tickets JIRA, qui étaient hors ligne à ce moment.
Vítor Neil Avelino

1
alors quand il est devenu en ligne, c'est fixe?
shareef

5
Dans mon cas, c'était une incompatibilité dans le nom d'utilisateur avec lequel les validations ont été générées 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 validations et les valider à nouveau avec le nom d'utilisateur mis à jour. Vous pouvez mettre à jour le nom d'utilisateur git avec cette commandegit config user.name 'UpdatedUserName'
MM

3
Dans notre cas, bitbucket n'a permis à personne de pousser vers cette branche.
Ramon Fincken

Dans mon cas, j'ai dû trouver les paramètres de repo sur bitbucket et désactiver le validateur de validation sous les paramètres Hooks.
Sizons

78

Je parie que vous essayez une poussée non rapide et que le crochet la bloque. Si tel est le cas, exécutez simplement git pull --rebaseavant de pousser pour rebaser vos modifications locales sur la base de code la plus récente.


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

Dans un nouveau référentiel, j'ai poussé une branche (pas maître), puis l'ai rebasée et j'ai eu l'erreur lors de la poussée. 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 trouvé que ma branche était protégée.
CoolMind

60

La taille du fichier est importante. Il y a une limite de ~ 120 Mo pour un seul fichier. Dans mon cas, .gitignore utilisant Visual Studio avait le fichier répertorié, mais le fichier était toujours validé. Lorsque vous utilisez git cli, nous pouvons obtenir des informations plus détaillées sur l'erreur.

le crochet de pré-réception refusé a été causé par le gros fichier. Valider fondamentalement 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.

Remarque: Utilisez HEAD ~ N pour revenir au nombre N de validations précédentes. (ie 3, 4) Utilisez toujours le commutateur --soft pour maintenir les modifications dans le dossier

J'espère que ça aide.


Cela a aidé car mon problème était qu'un fichier de vidage SQL indésirable (155 Mo de taille de fichier) était poussé (par accident).
Mehrdad Dastgir

1
La taille limite des fichiers dépend de votre hébergeur. GitHub a une limite à environ cette taille, pour d'autres, il varie, et git auto-hébergé n'a naturellement pas de telles limites.
1615903

1
que faites-vous si vous avez déjà plusieurs validations après le push refusé? c'est mon cas, j'ai un gros fichier indésirable (627 Mo) dans l'un des commits précédents avant d'essayer de repousser
leeCoder

Un fichier CSV a été téléchargé par accident. Donc, dans mon cas, l'erreur était due à cela.
tonhozi

Si vous avez plusieurs validations, augmentez l'index pour réinitialiser la tête à cette validation. Par exemple, utilisez HEAD ~ 3 pour revenir aux trois validations précédentes. Utilisez toujours le commutateur --soft pour conserver les modifications dans le dossier.
ozkary

13

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


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 le nom de la branche réelle vers la télécommande. Donc, si la branche parent est protégée, cela semble se produire, mais il ne semble pas y avoir de toute façon de corriger cela dans VS et vous devez basculer vers la ligne cmd.
Mark


8

J'ai reçu ce message lorsque le serveur GitLab subissait quelques modifications. Le lendemain, pousser a bien fonctionné. Quoi qu'il en soit, comme d'autres l'ont souligné, vérifiez auprès de votre responsable pour être sûr.


1
Je viens d'avoir ce problème et je suppose que GitLab apportait des changements. Je lui ai donné 10 minutes et cela a fonctionné. Je n'ai rien changé.
woter324

Je viens d'avoir ce problème aussi. Pour tous ceux qui voudraient vérifier si c'est le cas: status.gitlab.com
Renan Ferrari

5

J'ai eu ce problème lors de la tentative de fusion des modifications avec une taille de fichier supérieure à celle autorisée par le référentiel distant (dans mon cas, c'était GitHub)


2
Dans mon cas, même après la suppression du fichier, GitHub se plaignait toujours ... mais cette réponse a fait l'affaire stackoverflow.com/questions/19573031/…
CodenameDuchess

5

J'ai rencontré ce même problème.
Ce qui m'a résolu, c'est de passer à une autre branche, puis de revenir à l'original.

Je ne sais pas quelle était la cause du soulignement, mais cela l'a corrigée.


Je ne pouvais pas non plus pousser vers la nouvelle succursale
zabop

3

Bitbucket : vérifiez les autorisations de branche dans les paramètres (il peut s'agir de `` Tout refuser ''). Si cela ne fonctionne pas, clonez simplement votre branche vers une nouvelle branche locale , envoyez les modifications à la télécommande (une nouvelle branche distante sera créée) et créez un PR.


2

Au cas où cela aiderait quelqu'un:

J'avais un dépôt vierge sans branche principale à déprotéger (dans Gitlab) donc avant de lancer git push -u origin --all

  • J'ai dû courir en git push -u origin masterpremier,
  • déprotéger temporairement la branche principale
  • pousser le reste ( --all& --tags)

2

J'ai rencontré la même erreur, en vérifiant que j'avais un accès développeur et que je ne pouvais pas publier une nouvelle branche. L'ajout de droits d'accès supérieurs a résolu ce problème. (Gitlab)


2

J'ai eu cette erreur avec GitHub gist. J'essayais de pousser un commit avec des fichiers dans des sous-répertoires. Il s'est avéré que l'essentiel ne peut avoir que des fichiers dans le répertoire racine.


J'ai aussi ça. Il s'avère que le dépôt avait le fichier, "snippets\\csharp.json"ce qui donnait du fil à retordre à Windows.
Carl Walsh

2

Supprimez l'option de branche protégée ou autorisez des rôles supplémentaires tels que des développeurs ou des administrateurs pour permettre à ces utilisateurs rencontrant cette erreur de fusionner et de pousser.


1

Dans mon cas, nous avons des hooks pour les messages de commit, notre script serveur accepte les commit s'ils ont le format spécial pour le message de commit "<JIRA ID><Message>". Il (crochet) refuse la validation si le ticket Jira respectif n'existe pas ou s'il y a des symboles spéciaux dans le message de validation. Je fais face à cette erreur lorsque j'ajoute /, [,> etc. dans un message de validation, la suppression de ces travaux fonctionne bien.


Il est peu probable que cette réponse soit utile, car l'affiche originale (et toute autre personne visitant à l'avenir) aura un script différent configuré comme un crochet de pré-réception.
aronisstav

1

Cela se produit en fait lorsque YACC est activé côté serveur dans BitBucket. YACC est activé pour que les noms de problème JIRA soient mentionnés dans le message de validation. Ainsi, chaque fois que vous engagez quelque chose au moins, conservez votre numéro JIRA dans le message de validation et vous pouvez également ajouter votre propre message.


1

J'utilisais GitKraken et nous avons créé une branche locale, puis nous y avons fusionné deux branches distantes, puis nous avons essayé de pousser la branche locale à l'origine. Cela n'a pas fonctionné avec le même message d'erreur.

La solution était de créer la branche locale et de la pousser d'abord vers l'origine, puis de faire la fusion.


1

Problème: "Refus échoué PUSH / tête / - crochet de pré-réception refusé"

J'ai été confronté au problème de l'impossibilité de pousser mes modifications dans ma branche d'origine et de quoi que ce soit à la branche principale d'un référentiel de projet particulier car la taille de ce dépôt était supérieure à la limite stricte de 2 Go. C'était jeter l'erreur. C'est parce que nous avions poussé sans le savoir les données de test vers bitbucket à partir d'autres branches de test.

PUSH Refs échoué / tête / - crochet de pré-réception refusé

Donc, la vérification essayée est la même chose avec les autres dépôts de projets et ils n'ont eu aucun problème.

Réparer:

Mon collègue a remarqué que lorsque nous avons cloné le projet localement, la taille du projet était de 110 Mo. Nous avons donc commencé à nettoyer les branches que nous avions fusionnées plus tôt et les branches actives qui ne sont plus nécessaires. Une fois que le nettoyage est fait pour quelques branches, nous avons réalisé que la taille du dépôt est passée de 2 Go à 120 Mo. Ensuite, nous avons essayé de pousser les changements dans ma branche et cela a fonctionné.


1

Dans mon cas, j'avais un nouveau référentiel, j'ai poussé une branche ('UCA-46', pas 'master'), l'ai rebasé, forcé à nouveau et j'ai eu l'erreur. Il n'existait aucun crochet Web. J'ai exécuté git pull --rebasecomme @ThiefMaster l'a conseillé, j'ai dû rebaser à nouveau et j'ai pu pousser la branche. Mais c'était une manière étrange et difficile.

Ensuite, j'ai vu le crochet de pré-réception d'erreur de poussée Git refusé . J'ai trouvé que ma branche était protégée . J'ai retiré la protection et j'ai pu pousser à nouveau de force.

entrez la description de l'image ici


0

Je l'ai eu en essayant de pousser vers une instance de dokku. Il s'avère que le disque était plein sur mon serveur.

Ran: du -f

Et le résultat a été:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

0

Pour moi, l'autorisation sur un serveur git distant résout le problème. entrez la description de l'image ici


0

Dans mon cas, c'est parce que j'ai accidentellement ajouté un fichier géant à mon push non engagé et que je ne pouvais pas m'en débarrasser, quel que soit le pull, la reset ou le rm que j'ai fait après.

ma sale solution mais la solution réalisable est de renommer le répertoire actuel, de recloner le répertoire en local et de refléter manuellement les modifications dans le répertoire local recloné ...

Ça ne sonne pas bien mais ça marche ...


1
J'ai rencontré le même problème et l'utilisation de $ git reset --soft HEAD ~ 1 comme l'a suggéré @ozkary.
jarrettyeo

0

L'erreur pour moi était que le projet n'avait pas de branches créées, et mon rôle était développeur, donc je ne pouvais pas créer de branche, demandez-leur de me donner les autorisations pertinentes et tout en ordre maintenant!


0

Une branche par défaut (par exemple master) n'existe pas encore pour votre télécommande. Vous devez donc d'abord créer une masterbranche sur le serveur distant git (par exemple en créant un README.mdfichier par défaut ), puis essayez de pushtoutes vos branches locales existantes en utilisant cette commande:

git push -u origin --all

0

Pour moi, tout fonctionnait bien jusqu'à ce que Bitbucket change automatiquement sa politique aujourd'hui (21 avril 2020). Cela arrive pour s'aligner sur une nouvelle fonctionnalité récemment introduite aujourd'hui appelée Workspaces , donc je soupçonne que cela a quelque chose à voir avec cela.

Solution : j'ai (en tant qu'administrateur) suivi les instructions pour ajouter l'adresse e-mail aux utilisateurs dans l'interface utilisateur (l'e-mail que vous utilisez se trouvegit config --list

entrez la description de l'image ici


-7

La spécification d'une version node.js peut résoudre le problème comme

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.