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.

1139voto

arno_v Points 384

Pour moi, cela a fonctionné (cela ne changera pas dans la télécommande) :

git remote prune origin

Comme cette réponse semble aider beaucoup de gens, j'ai creusé un peu pour savoir ce qui se passe réellement ici. Ce que cela va faire, c'est supprimer les références aux branches distantes dans le dossier .git/refs/remotes/origin .

Cela n'affectera donc pas vos branches locales et ne changera rien à distance. mais il mettra à jour les références locales que vous avez aux branches distantes. Il semble que dans certains cas, ces références peuvent contenir des données que Git ne peut pas traiter correctement.

604voto

kiran.gilvaz Points 5418

Tu veux essayer de faire :

git gc --prune=now

Voir https://www.kernel.org/pub/software/scm/git/docs/git-gc.html

218voto

johnnyclem Points 2894

Cela m'est arrivé lorsque mon serveur distant git (bitbucket.org) a changé d'adresse IP. La solution rapide a été de supprimer et de réinsérer la télécommande, puis tout a fonctionné comme prévu. Si vous n'êtes pas familier avec la façon de supprimer et de ré-adhérer un serveur distant dans git, voici les étapes :

  1. Copiez l'URL SSH git de votre télécommande existante. Vous pouvez l'imprimer dans le terminal en utilisant cette commande :

    git remote -v

qui s'imprimera comme ceci :

 origin git@server-address.org:account-name/repo-name.git (fetch)
 origin git@server-address.org:account-name/repo-name.git (push)
  1. Supprimez la télécommande de votre dépôt git local :

    git remote rm origin

  2. Ajoutez le remote à votre repo local :

    git remote add origin git@server-address.org:account-name/repo-name.git

73voto

aliibrahim Points 552

C'est ce que j'ai fait pour me débarrasser de tous les problèmes de refoulement :

git gc --prune=now
git remote prune origin

C'est probablement ce que vous devez faire aussi.

En savoir plus git gc ici : https://git-scm.com/docs/git-gc

En savoir plus git remote prune ici : https://git-scm.com/docs/git-remote#Documentation/git-remote.txt-empruneem

66voto

akansh tayal Points 639

Commande en cours d'exécution git update-ref -d refs/heads/origin/branch Je l'ai réparé.

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