2014-10-26 14 views
5

Jeden z naszych gości popchnął zatwierdzenie, które wydaje się być całe i działa na jego komputerze. Od tego czasu żaden z pozostałych komputerów nie jest w stanie pobrać zmian ze zdalnego repozytorium. Błąd, że każdy robi to:Git nie może pobrać z powodu uszkodzonego zatwierdzenia

git.exe fetch -v --progress "origin" 

POST git-upload-pack (gzip 1407 to 775 bytes) 
remote: error: Could not read a75720ce47ae8dcc1d0b4c09fcb7d6f70efa390b 
remote: fatal: revision walk setup failed 
remote: aborting due to possible repository corruption on the remote side. 
fatal: protocol error: bad pack header 
git did not exit cleanly (exit code 128) (14368 ms @ 26/10/2014 11:49:05) 

SHA (a75720 ...), które nie mogą być odczytywane jest SHA wspomnianej popełnić.

Próbowaliśmy różnych rzeczy, ale nic nie działa. Uruchamianie git fsck nie pokazuje zatwierdzenia jako zwisającego, a na zdalnym serwerze żadna gałąź nie wskazuje na zatwierdzenie.

Odzyskiwanie danych z zatwierdzenia nie jest priorytetem, ale przywrócenie systemu do stanu fabrycznego.

Jakieś sugestie, jak usunąć/naprawić złamane zatwierdzenie? Pomoc byłaby bardzo ceniona.

Dzięki!

+0

Aby było jasne, uruchomiłeś 'git fsck' na pilocie i nie znalazłem żadnych problemów? –

Odpowiedz

1

W swoim lokalnym komputerze możesz ponownie ustawić swojego mastera do zatwierdzenia przed a75720.

Rollback to an old Git commit in a public repo

Następnie można dokonać cherry-pick dla innych zobowiązuje. (Można spicify wykaz zatwierdzeń)

How to cherry-pick multiple commits

Następnie, jeśli wszystko wydaje się działać, trzeba zrobić push force.

git Push --force pochodzenie desiredBranch

(określić żądany oddział !!)

od: http://git-scm.com/docs/git-push

--force Zwykle komenda odmawia aby zaktualizować zdalny ref, który nie jest przodkiem lokalnego ref używany do nadpisania go. Ponadto, gdy użyta jest opcja - force-with-lease, polecenie odmawia aktualizacji zdalnego ref, którego aktualna wartość nie jest zgodna z oczekiwaną.

Ta flaga wyłącza te sprawdzenia i może spowodować, że zdalne repozytorium straci zatwierdzenie; używaj go ostrożnie.

Zauważ, że --force dotyczy wszystkich pozycjach piśmiennictwa, które są wypychane, a więc za pomocą go push.default ustawiony na dopasowanie lub z wieloma wypychania docelowych skonfigurowanych z pilota. *. Push może nadpisać bibl drugiej niż obecny oddział (łącznie z lokalnymi punktami odniesienia, które są ściśle za ich zdalnym odpowiednikiem). Aby wymusić wypychanie tylko do jednej gałęzi, użyj + przed refspec, aby przepchnąć (na przykład git push origin + master, aby wymusić naciśnięcie do gałęzi głównej). Zobacz powyższą część ... dla szczegółów .

Powiązane problemy