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