Notoire Git Erreur à distance: rejeté (échec de verrouillage)
J'essaie de pousser pour une branche de mon local à l'origine. Le nom de la branche et le chemin d'accès est le même. J'ai été en poussant et en tirant de cette branche pendant un certain temps et n'a jamais eu un problème. Mais tout à coup, il a commencé à mal se comporter. La dernière fois quand j'ai essayé de pousser à l'origine avec la commande suivante:
git push origin feature/Prizefulfilment
Il me donne erreur suivant:
72c6c1da98e5cff4484e254a538d9e3b472156ff but expected 0000000000000000000000000000000000000000
J'ai Googlé autour de lui, mais n'a pas trouvé tout à fait satisfaisants solution pour l'instant.
Mon erreur exact ressemble à ce qui suit:
$ git push origin feature/Prizefulfilment
Counting objects: 126, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (75/75), done.
Writing objects: 100% (78/78), 8.83 KiB, done.
Total 78 (delta 61), reused 0 (delta 0)
error: Ref refs/heads/feature/Prizefulfilment is at 72c6c1da98e5cff4484e254a538d9e3b472156ff but expected 0000000000000000000000000000000000000000
remote: error: failed to lock refs/heads/feature/Prizefulfilment
To [email protected]:OpusOneSCRUM
! [remote rejected] feature/Prizefulfilment -> feature/Prizefulfilment (failed to lock)
error: failed to push some refs to '[email protected]:OpusOneSCRUM'`
Des idées?
- Vous pouvez exécuter
git fsck
en local et à distance pour vous assurer que rien n'est sérieusement endommagé. - Il revint quelques balançant s'engage sur mon local
Checking object directories: 100% (256/256), done. Checking objects: 100% (106152/106152), done. dangling blob 4118c6392bbea95a6404d40344e12ff8fe1e64c8 dangling blob a34f2078115375df3749567e01793e556f0e5ade dangling blob 9a5e545d9056200834f74d6426144269974467a0 dangling blob 867c5821823a875e724203b5bc8bbf65c8b72931 dangling blob 128ccc6d40e4090cd725d37867308e525825b991 dangling blob 5b91603a188d5f13af4ef56b0f62d6d8caff92b4 dangling blob c6a5241f7a4c23a68456526adf94f3c784d1df69
et beaucoup plus fait miroiter - J'ai suivi avec git pruneau et il s'éloigne beaucoup de pendantes Gouttes buter certains balançant les commits sont toujours là...
- J'ai mis à jour ma question pour inclure plus de détails sur l'erreur.
- Ok. nouvelle mise à jour. Pour une raison quelconque,
git push origin feature/PrizeFulfilment
a été de me donner l'erreur, mais quand je l'ai fait` git push/prizeFulfilment: fonction/Prizefulfilment", il a travaillé... Ne sais pas comment et le pourquoi de cela. Seulement de leur dire explicitement que la branche de regarder pour les semble bien fonctionner.
Vous devez vous connecter pour publier un commentaire.
Qui est similaire à cette réponse:
Essayer et assurez-vous de utiliser la même capitalisation entre le local et le distant branches.
Vous deuxième commande de faire le lien entre les
prizeFulfilment
et à distancePrizefulfilment
explicite, c'est pourquoi il a travaillé. Mais ce n'est pas une bonne solution pour garder une branche locale avec ce genre de différence.Une autre raison de problèmes également présent sur la casse des systèmes contradictoires sur les violations des noms.
Si le dépôt distant contient branche
a/b
et que vous essayez de pousser la branchea/b/c
même erreur sera signalée par git (définitivement cette description de l'erreur doit être amélioré).https://coderwall.com/p/qkofma/a-caution-about-git-branch-names-with-s
https://ocroquette.wordpress.com/2011/07/10/git-failed-to-lock/
Ce qui s'est passé pour moi, c'était que git a été de changer la casse de ma section locale. J'avais une vieille branche nommée Fonctionnalité/blahBlah et une nouvelle branche nommée fonctionnalité/fooBar. Ce dernier a été renommé automatiquement en Fonction de/fooBar depuis git stocke les branches comme des dossiers et je ne pouvais pas avoir le même nom de dossier avec différents capitalisation.
Pour le fixer, j'ai dû aller dans .git/refs/heads et renommer 'Fonctionnalité' à 'fonctionnalité'` si toutes les branches seront cohérentes.
J'ai vu cette erreur se produire car une branche existe avec le même nom que ma nouvelle succursale nom de chemin d'accès. Exemple:
some_feature
some_feature/some_subfeature
some_feature/some_subfeature
à Distance(failed to lock)
Solutions:
some_feature/some_subfeature
àfoo/some_subfeature
some_feature
Dans mon cas c'était des autorisations pas correctement configuré dans le dépôt git. J'ai trouvé la solution ici: Comment utiliser le fichier de groupe les autorisations correctement sur un dépôt git?
Le problème est lorsqu'une nouvelle branche a été créée qui contient un chemin d'accès (fonction/Prizefulfilment), le dossier "fonctionnalité" est créé en "refs/heads/" et le nouveau dossier avait hériter les utilisateurs de l'ID de groupe qui a empêché les futurs utilisateurs d'utiliser le même chemin.
Pour résoudre ce problème, vous devez définir le setgid pour tous les répertoires dans le dépôt git de sorte que le nouveau dossier héritent de ses ID de groupe, plutôt que de l'ID de groupe de l'utilisateur.
Dans mon cas, j'ai dû commander une branche avec des bas de casse lettrage. Cela a provoqué une incohérence entre la distance de la branche et la branche locale de noms.
À distance n'a été INT-4368-de-fonction-des détails, tandis que la section locale a int-4368-de-fonction-détails.
À corriger, je suis allé dans .git\ref\têtes\fonctionnalité et renommé le nom de la branche pour correspondre à la distance. Puis est allé à la ligne de commande et a couru
Lorsque vous obtenez un message comme ça,d'abord faire tirer le fonctionnement de la télécommande de la branche.Alors ne poussez opération.Quand quelqu'un pousse fichiers vers un serveur distant,il va déplacer la branche master(en cas de succursale à distance est le maître,il peut être n'importe quel nom) en un autre endroit.Vous devez mettre à jour cette dans le dépôt local,de sorte que origin/master dans le référentiel local allons aller de l'avant.Puis ajouter les fichiers dans le référentiel local et de le valider.Alors ne poussez opération.Il a travaillé pour moi