Po klonowaniu ze zdalnego repozytorium git (w lepszych kodach) dokonałem pewnych zmian, zatwierdziłem i próbowałem wypchnąć:
git push origin master
Błędy związane z:
błąd: nie można zablokować istniejących informacji / odnośników
krytycznych: błąd git-http-push nie powiódł się
Ten przypadek dotyczy już istniejącego repozytorium.
To, co robiłem wcześniej, to:
git config –global http.sslVerify false
git init
git remote add [url]
git clone
- zmienić dane
git commit
W „bettercodes” nie mam dostępu do dziennika git.
Korzystam z systemu Windows. Szczegółowy błąd to:
C:\MyWorkStuff\Projects\Ruby\MyProject\>git push origin master
Unable to create branch path https://user:[email protected]/myproject/info/
error: cannot lock existing info/refs
fatal: git-http-push failed
Sklonowałem wcześniej, potem zmieniłem kod i zatwierdziłem.
git fetch
wcześniejgit pull
.Odpowiedzi:
Dla mnie to zadziałało:
git remote prune origin
Ponieważ wydaje się, że ta odpowiedź pomaga wielu ludziom, wgłębiłem się nieco w to, co się tutaj naprawdę dzieje. Spowoduje to usunięcie odniesień do zdalnych gałęzi w folderze
.git/refs/remotes/origin
. Nie wpłynie to więc na oddziały lokalne i nie zmieni niczego zdalnego, ale zaktualizuje lokalne odwołania do oddziałów zdalnych. Wydaje się, że w niektórych przypadkach te odwołania mogą zawierać dane, których Git nie może poprawnie obsłużyć.źródło
git
sugeruje zrobienie tego, ale nie chciałem tego robić, ponieważ polecenie brzmi, jakby coś zrobiło z pilotem.git gc --prune=now
Chcesz spróbować:
Zobacz https://www.kernel.org/pub/software/scm/git/docs/git-gc.html
źródło
git pull
utknął z podobnym komunikatem o błędzie.git
polecenia dotyczącego zdalnego.git remote prune origin
raz na zawsze rozwiązało problem.Stało się tak, gdy mój git remote (bitbucket.org) zmienił adres IP. Szybka poprawka polegała na usunięciu i ponownym dodaniu pilota, a następnie wszystko działało zgodnie z oczekiwaniami. Jeśli nie wiesz, jak usunąć i ponownie dodać pilota w git, wykonaj następujące czynności:
Skopiuj adres URL git SSH istniejącego pilota. Możesz wydrukować go na terminalu za pomocą tego polecenia:
git remote -v
który wydrukuje coś takiego:
Usuń pilota z lokalnego repozytorium git:
git remote rm origin
Dodaj pilota z powrotem do lokalnego repozytorium:
git remote add origin [email protected]:account-name/repo-name.git
źródło
git branch -u origin/master
Uruchomione polecenie
git update-ref -d refs/heads/origin/branch
naprawiło to.źródło
git update-ref -d refs/remotes/origin/my_branch
Naprawiłem to, wykonując następujące czynności
Zakładając, że lokalne i zdalne gałęzie są wyrównane, a błąd refs pojawia się jako niekrytyczny.
źródło
Miałem ten problem, ponieważ byłem w oddziale, który miał podobną nazwę do oddziału. tzn. wezwano gałąź upstream
example-branch
i moja gałąź lokalnaexample-branch/backend
. Rozwiązaniem była zmiana nazwy mojego lokalnego oddziału w następujący sposób:źródło
Prawdopodobnie problem został już rozwiązany. Ale oto, co zadziałało dla mnie.
Lokalizacja:
Jeśli zablokowane repozytorium znajduje się po stronie serwera:
Jeśli zablokowane repozytorium jest tylko lokalne:
Uruchom to polecenie:
W razie potrzeby napraw uprawnienia w swoim (zdalnym lub / i lokalnym) repozytorium. W moim przypadku musiałem
chmod
się777
ichown
doapache:apache
Spróbuj wypchnąć ponownie z lokalnego repozytorium:
źródło
Dla mnie zadziałało:
.git/logs/refs/remotes/origin/branch
.git/refs/remotes/origin/branch
git gc --prune=now
źródło
Tak to dla mnie działa.
Jeszcze szybsza alternatywa:
cat /dev/null > /var/lock/apache2/DAVlock
źródło
#> rm DAVLock; touch DAVLock; chown www-data.www-data DAVLock; chmod 755 DAVLock; service apache2 restart
To brzmi jak problem z uprawnieniami - czy to możliwe, że masz otwarte dwa okna, uruchamiane z osobnymi prawami? Być może sprawdź własność folderu .git.
Być może sprawdź, czy jest otwarta zaległa blokada pliku, może użyj lsof, aby sprawdzić, lub odpowiednika dla twojego systemu operacyjnego.
źródło
W moim przypadku gałąź została przeniesiona do podkatalogu, a katalog został nazwany jako gałąź. Git był tym zmieszany. Kiedy usunąłem lokalny oddział (w SourceTree tylko prawym przyciskiem myszy usuń) wszystko działało jak zwykle.
źródło
W moim przypadku po otrzymaniu tej wiadomości wykonałem polecenie kasy i otrzymałem tę wiadomość:
Po uruchomieniu tego polecenia wróciłem do normy.
źródło
Aktualizacja:
Może być konieczna edycja pliku ~ / .netrc:
https://bugs.launchpad.net/ubuntu/+source/git-core/+bug/293553
Oryginalna odpowiedź:
Dlaczego wyłączyłeś ssl? Myślę, że może to mieć związek z tym, że nie możesz przesyłać danych przez https. Odłożyłbym to z powrotem i spróbowałem ponownie:
źródło
Sprawdź, czy masz (proces git) dostęp do pliku
.git/info/refs
i czy ten plik nie jest zablokowany przez inny proces.źródło
Miałem ten problem, kiedy próbowałem utworzyć nową gałąź funkcji, która zawierała nazwę starej gałęzi, np. Origin - gałąź1 i chciałem utworzyć funkcję gałąź1. Nie było to możliwe, ale funkcja branch1 / już była.
źródło
W moim przypadku musiałem ręcznie usunąć stare tagi, które zostały usunięte zdalnie.
źródło
W moim przypadku było to związane z nazwą oddziału, którą już utworzyłem.
Aby rozwiązać ten problem, utworzyłem gałąź o nazwie, która z pewnością nie powinna istnieć, na przykład:
Następnie wyczyściłem wszystkie inne gałęzie (nieaktywne), ponieważ były to niepotrzebne śmieci.
a następnie zmieniłem nazwę mojej obecnej gałęzi na nazwę, którą zamierzałem, na przykład:
źródło
W przypadku bettercodes.org rozwiązanie jest bardziej poetyckie - jedynym problemem mogą być prawa przypisane członkom projektu. Prosti członkowie nie mają prawa zapisu! Upewnij się, że masz uprawnienia moderatora lub administratora. Oczywiście administrator musi to ustawić na stronie bettercodes.org w ustawieniach projektu.
źródło
Widziałem ten błąd podczas próby uruchomienia,
git filter-branch
aby odłączyć wiele podkatalogów do nowego, osobnego repozytorium (jak w tej odpowiedzi ).Wypróbowałem wszystkie powyższe rozwiązania i żadne z nich nie działało. W końcu zdecydowałem, że nie muszę zachowywać wszystkich moich tagów w nowej gałęzi i po prostu uruchomiłem:
źródło