2016-06-21 11 views
7

Nie jestem wielkim ekspertem od git, ale używam go od kilku lat. Ostatnio zauważyłem dziwne zachowanie związane ze skrytkami. Wydaje się, że tylko częściowo działa dla mnie.Jak zrobić plik git to nowe pliki, które nie zostały wystawione na próbę?

Na przykład dzisiaj próbowałem ukryć 4 niezatwierdzone zmiany. 1 plik został dodany do skrytki, pozostałe 3 pozostały jako niezatwierdzone zmiany. Próbowałem go kilka razy i po pierwszej próbie otrzymywałem "Brak lokalnych zmian do zapisania", ale status nadal pokazywał 3 niezatwierdzone zmiany.

Jednak przez przypadek odkryłem, że kiedy po raz pierwszy wprowadzam zmiany, które wcześniej nie były niestabilne, będą one normalnie przechowywane. Grałem w kółko i jest to powtarzalne: jeśli wszystkie zmiany nie zostaną anulowane, tylko jedna zmiana zostanie ukryta. Jeśli zmiany "problemu" zostaną zainscenizowane, wszystkie zmiany zostaną ukryte (nie ma znaczenia, czy "dobra" zmiana zostanie zainscenizowana, czy też nie, zawsze będzie ukryta).

Czy to błąd, czy też robię coś nie tak?

Używam Git dla Windows 2.8.2 i Git Extensions 2.48.05.

Nie ma znaczenia, czy staram się przechować zmiany za pośrednictwem interfejsu graficznego Git Extensions lub konsoli.

EDYCJA: Jeśli wykonam wszystkie 4 zmiany przed zapisem, gdy zrobię zrzut, 3 zmiany problemów zostaną zainscenizowane, tak jak poprzednio, ale dobra zmiana, która zawsze jest wstrzymywana, jest anulowana. Tak więc pop upa nie krąży o statusie tak, jak przed skrytką. Jest to również powtarzalne.

+4

Być może pliki, które nie są wystawiane na próbę, nie są śledzone przez Git? Wypróbuj 'git stash -u' –

+2

@ Jonathan.Brink: To jest odpowiedź. Zmiany, które nie byłyby ukryte, to nowe pliki, jeszcze nie śledzone. Ustawiłem flagę -u, a oni schowali się bez problemów. Jeśli chciałbyś odpowiedzieć, zaakceptuję to. –

Odpowiedz

13

Problem polega na tym, że domyślnie polecenie stash nie będzie zawierało niepotakanych plików.

Aby dołączyć pliki nieśledzone użyj (--include-untracked) Flaga -u:

git stash -u 

Jeśli --include-untracked Opcja jest używany, wszystkie pliki są Nieśledzone również ukryty, a następnie oczyścić z git clean, pozostawiając działający katalog w bardzo czystym stanie.

+5

jak wspomniano w odpowiedziach na [to wcześniejsze pytanie] (http://stackoverflow.com/questions/835501/how-do-you-stash-an-untracked-file), używając 'git stash -u' ** will [ trwale usuwaj zignorowane foldery] (https://gitlab.com/tortoisegit/tortoisegit/issues/1200) ** – phillchill

Powiązane problemy