576 votes

Git et le méchant "error : cannot lock existing info/refs fatal" (erreur : ne peut pas verrouiller les informations/références existantes)

Après avoir cloné à partir d'un dépôt git distant (chez bettercodes) J'ai fait quelques changements, j'ai commité et j'ai essayé de pousser :

git push origin master

Des erreurs avec :

erreur : impossible de verrouiller les informations/références existantes
fatal : git-http-push a échoué

Ce cas concerne un référentiel déjà existant.

Ce que je faisais avant, c'était :

  1. git config –global http.sslVerify false
  2. git init
  3. git remote add [url]
  4. git clone
  5. modifier les données
  6. git commit

Chez 'bettercodes', je n'ai pas accès au journal git.

J'utilise Windows. L'erreur détaillée était :

C:\MyWorkStuff\Projects\Ruby\MyProject\>git push origin master
Unable to create branch path https://user:password@git.bettercodes.org/myproject/info/
error: cannot lock existing info/refs
fatal: git-http-push failed

J'ai cloné avant, puis changé le code et commis.

4voto

ttfreeman Points 541

Exécuter git fetch --all avant git pull . Cela devrait résoudre le problème.

3voto

Denis Points 116

J'ai eu un problème typique lié au Mac que je n'ai pas pu résoudre avec les autres réponses proposées.

Le système de fichiers par défaut du Mac est insensible à la casse.

Dans mon cas, un collègue a manifestement oublié de créer une lettre majuscule pour une branche, c'est-à-dire

testBranch/ID-1 contre testbranch/ID-2

pour le système de fichiers Mac (oui, il peut être configuré différemment) ces deux branches sont les mêmes et dans ce cas, vous n'obtenez qu'un seul des deux dossiers. Et pour le dossier restant, vous obtenez une erreur.

Dans mon cas, la suppression du sous-dossier en question dans .git/logs/ref/remotes/origin a résolu le problème, car la branche en question a déjà été fusionnée à nouveau.

3voto

jave.web Points 1022

Comme référence pour Visual Studio Code (vscode, code) (et éventuellement d'autres IDE)

Je devais commander : Git: Fetch (Prune)

L'alternative en ligne de commande devrait être : git fetch --prune

Entonces redémarrer l'ensemble de l'IDE.

Et pour donner une certaine perspective, je vais citer Les docks de BitBucket :

Quelle est la différence entre Git Prune,
Git Fetch --prune, et Git Remote Prune ?

git remote prune y git fetch --prune faire la même chose : supprimer les références aux branches qui n'existent pas sur le distant. Ceci est hautement souhaitable lorsque l'on travaille dans un flux de travail d'équipe dans lequel les branches distantes sont supprimées après la fusion vers main . La deuxième commande, git fetch --prune se connectera au distant et récupérera le dernier état du distant avant l'élagage. Il s'agit essentiellement d'une combinaison de commandes :
git fetch --all && git remote prune
Le générique git prune est totalement différent. Comme nous l'avons vu dans la section aperçu, git prune supprime les commits détachés localement.

2voto

Ivan Danilov Points 5719

Vérifiez que vous (le processus git en fait) avez accès au fichier .git/info/refs et ce fichier n'est pas verrouillé par un autre processus.

2voto

user11464384 Points 19

J'ai eu ce problème, lorsque j'ai essayé de créer une nouvelle branche de fonctionnalité qui contenait le nom de l'ancienne branche, par exemple origin - branch1 et je voulais créer branch1-feature. Ce n'était pas possible, mais branch1/feature l'était déjà.

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