2011-08-12 10 views
6

Niedawno podzieliłem moje repozytorium (rezydujące w bigproj) używając git filter-branch --subdirectory-filter deep/in/my/project. Następnie przeniosłem katalog .git do deep/in/my/project.Przechowuj skrzynkę po filtrze Git -subdirectory-filter

teraz ukryta jest w obcym państwie, gdzie górna ukryta jest coś takiego:

[email protected]{0}: filter-branch: rewrite 

nie może spaść ten zapas, jak uzyskać ten błąd (po git stash drop):

refs/[email protected]{0}: not a valid stashed state 

Teraz, nawet jeśli znam uzupełnienie skrytki @ {1}, nadal zawiera ona pliki różnic w plikach w hierarchii bigproj. Czy jest możliwe ponowne zapisanie danych ukrytych, tak aby zawierały tylko pliki należące do hierarchii deep/in/my/project?

Odpowiedz

0

Zgaduję, że przed przeniesieniem katalogu .git musisz wykonać drop i pop. Zawsze możesz go ponownie zapisać po przeniesieniu.

+0

Nie, to nie działa. Nawet jeśli spróbuję 'git stash drop' przed przeniesieniem katalogu' .git', otrzymam ten sam błąd. Co masz na myśli przez ponowne przechowywanie? –

+1

Hmm, najwyraźniej "skrytka" z jakiegoś powodu nie przetrwała procesu rozgałęziania filtrów. Prawdopodobnie będziesz musiał wrócić do stanu niefiltrowanego i po prostu zatwierdzić te zmiany, a następnie po filtrze wykonać "git reset HEAD ~ 1", aby ponownie je anulować. –

3

Miałem ten sam problem po użyciu git filter-branch. Poniższa komenda całkowicie odkurza zawartość, a zatem usuwa także wpisy utworzone przez git filter-branch. Ostrzeżenie!, że wszystkie ukryte zmiany mogą nie być możliwe do odzyskania po wywołaniu tego polecenia, więc upewnij się, że zastosujesz wszystkie inne stany przed wywołaniem polecenia.

git stash clear 
+0

Ale nie chcę zabijać całej skrytki, chcę ją zachować, tylko bez części, które nie są już w repozytorium. –