2010-11-11 7 views
17

Często mi się to zdarzało. Pracuję nad główną gałęzią i muszę przetestować wtyczkę, więc tworzę nową gałąź i sprawdzam. Pobieram wtyczkę do katalogu projektu i testuję ją. Następnie przełączam się z powrotem do gałęzi głównej i usuwam utworzony przeze mnie oddział.Dlaczego Git nie usuwa niektórych plików podczas przełączania gałęzi?

Co się dzieje, pliki wtyczki pozostają w katalogu projektu. Zastanawiam się, czy to normalne zachowanie. Co muszę zrobić, aby płynnie przełączać się pomiędzy oddziałami?

+0

@ipsum: Odpowiedź? –

+3

git nie usunie nieśledzonych plików z kopii roboczej, więc dopóki nie dodasz plików wtyczki i nie utworzysz commit na nowej gałęzi git nie zrobi nic z plikami wtyczek – knittl

+1

@knittl: * to * jest odpowiedzią. Może i po to. (Może oprócz wzmianki o "git clean"). – Cascabel

Odpowiedz

12

git nie usunie nieśledzonych plików z kopii roboczej, więc dopóki nie dodasz plików wtyczki i nie utworzysz zatwierdzenia w nowej gałęzi git nic nie zrobi dla plików wtyczek.

jeśli chcesz usunąć nieśledzonej plik z drzewa roboczego, należy git clean - bądź ostrożny, będzie usunąć plik nieśledzonej z dysku i nie ma sposobu, aby odzyskać od tego (bez użycia cofnąć oprogramowania)

+0

Potencjalnym niebezpieczeństwem "git clean", oczywiście, jest to, że nie zrobi nic, chyba że przekażesz mu opcję '-f'. (Prawdopodobnie pomocne w tym przypadku - możesz użyć go na określonych ścieżkach.) – Cascabel

+0

dlaczego "git nie usunie nieśledzonych plików z twojej kopii roboczej"? czy moje następne "git add" doda te nieśledzone pliki z innej gałęzi? – joetsuihk

+0

@joetsuihk: nieśledzone pliki w katalogu roboczym nie należą do żadnej gałęzi, należą do katalogu roboczego. jeśli użyjesz 'git add' untracked files, zostaną one uwzględnione w następnym zatwierdzeniu – knittl

0

try checkout -f

zobaczyć git --help kasę:

postępować nawet jeśli indeks lub drzewo pracy różni się od głowy. Służy do wyrzucania zmian lokalnych.

+2

Nie sądzę, że to właśnie doświadcza OP. Zamówienie jest kontynuowane, ale zostawia tam trochę plików. – Cascabel

+0

Zgadzam się z Jefromi –

0

Jeśli są przełączania iz powrotem między oddziałami, gdzie struktury katalogów są różne, a okaże się, że istnieją pewne artefakty pozostawione skończy, może trzeba uruchomić:

git clean -df 

To będzie „usuń”, „siła”. Utracisz WSZYSTKIE niepotwierdzone pliki, myślę, że może to być jeden krok od:

git reset --hard