Opis problemu:


Występuje rzadko, ale potrafi podnieść ciśnienie, zwłaszcza kiedy zmiana którą próbujemy wypchnąć jest pilna. Problem pojawia się gdy na serwerze zdalnym, gdzie przechowywane jest repozytorium GIT nastąpi "ręczna" zmiana gałęzi na której aktualnie pracujemy, zmieni się adres serwera lub czasami błąd wystąpi bez powodu.

⚠️ UWAGA: Należy uważać na nazwy gałęzi. W przypadku systemu Windows utworzenie dwóch gałęzi o tej samej nazwie, ale pisząc je literami różnej wielkości(np.: rc i RC) może spowodować poniższy błąd i inne niespodziewane problemy z repozytorium.

Objawy


Błąd objawia się w poniższy sposób podczas wykonywania polecenia git push lub git pull i może przybrać kilka form, najczęściej:

  • error: cannot lock ref
  • error: cannot lock existing info/refs
  • fatal: git-http-push failed

Rozwiązanie:

Przyczyną mogą być przestarzałe pliki cache i nadmiarowe dane historyczne, rozwiązaniem najczęściej jest ich usunięcie i zoptymalizowanie lokalnego repozytorium:

git gc --prune=now


Jeżeli chcesz wiedzieć więcej co robi powyższe polecenie - zapraszam do dokumentacji.

Jeżeli odnośniki do zdalnych gałęzi są błędne(nastąpiła zmiana URL repozytorium lub nazwa gałęzi została przez kogoś zmieniona), poniższe polecenie powinno pomóc. Usuwa ono stałe referencje i powiązania lokalnych gałęzi ze zdalnymi:

git remote prune origin