Nieśledzone pliki są przechowywane w trzecim nadrzędnym zatwierdzeniu ukrytym. (W rzeczywistości nie jest to udokumentowane, ale jest dość oczywiste z zatwierdzenia, które wprowadziło funkcję -u, 787513 ... , i sposobu, w jaki reszta dokumentacji dotyczącagit-stash
rzeczy frazowych ... lub po prostu robiąc git log --graph stash@{0}
)
Możesz wyświetlić tylko „nieśledzoną” część skrytki przez:
git show stash@{0}^3
lub po prostu samo „nieśledzone” drzewo, poprzez:
git show stash@{0}^3:
lub określony „nieśledzony” plik w drzewie za pośrednictwem:
git show stash@{0}^3:<path/to/file>
Niestety, nie ma dobrego sposobu, aby uzyskać podsumowanie różnic między wszystkimi stanami etapowymi + niestabilnymi + nieśledzonymi a stanami "bieżącymi". tj .: git show stash@{0}
nie można zmusić do uwzględnienia plików bez śledzenia. Dzieje się tak, ponieważ obiekt drzewa samego zatwierdzenia ukrytego, o którym mowa jako stash@{0}:
, nie zawiera żadnych zmian w stosunku do trzeciego, „niestacjonarnego” rodzica.
Wynika to ze sposobu ponownego stosowania skrytek: śledzone pliki można łatwo zastosować jako łaty, podczas gdy pliki nieśledzone mogą być stosowane tylko w teorii jako „całe pliki”.
git stash show
wydaje się pokazywać różnicę między kopią roboczą a numerem 1 (odpowiedni kod z git-stash.sh:,git diff ${FLAGS:---stat} $b_commit $w_commit
w którym $ b_commit to # 1, a $ w_commit to zatwierdzenie skrytki); czy jest jakiś wbudowany sposób nagit stash show
dołączenie również # 3?git log --graph --topo-order -m -u
. matthewlmcclure.com/s/2014/01/10/…fatal: ambiguous argument 'stash@{0}^3': unknown revision or path not in the working tree.
), jeśli w rzeczywistości nie masz nieśledzonych plików w tym schowku (ale myślisz, że tak).git stash show
nie, nie pokazuje nieśledzonych plików (prawda przynajmniej dla git 2.7.4):git stash pop
najpierw spróbuje przywrócić nieśledzone pliki, a następnie spróbuje przywrócić śledzone pliki. Jeśli ta ostatnia operacja się nie powiedzie (np. Konflikt), pierwsza operacja nie zostanie wycofana (niezamknięty-plik-skrytka pozostanie bez zmian, ale pliki nie zostaną usunięte z dysku), więc nawet jeśli naprawisz konflikt, następny pop nie powiedzie się tak czy siak.Możesz wyświetlić listę wszystkich zatwierdzeń skrytki za pomocą następującego polecenia:
Ponieważ skrytki są reprezentowane jako trójdrożne zatwierdzenie scalające HEAD, indeksu i niezatwierdzonego nadrzędnego „roota” zatwierdzenia nieśledzonych plików, nieśledzone skrytki plików można wyświetlić, przesyłając powyższe dane wyjściowe do następującego:
Przydatne zastosowania powyższych:
Pokaż tylko nieśledzone, przechowywane pliki
Oczywiście usuń,
--stat
aby zobaczyć zawartość plików.Znajdź określony plik
Pliki bez śledzenia Grepa
Wypisz całą zawartość wszystkich skrytek
źródło
Aby wyświetlić nieśledzone pliki w skrytce:
Aby wyświetlić pełną różnicę wszystkich nieśledzonych plików (z zawartością):
Te polecenia odczytują ostatnią (najnowszą) skrytkę. W przypadku wcześniejszych skrytek zwiększ liczbę za „skrytką @”, na przykład
stash@{2}
dla drugiej od ostatniej skrytki.Powodem tego jest to, że prace
git stash
tworzy scalającej dla każdego zapasach, które mogą być przywoływane jakostash@{0}
,stash@{1}
itd. Pierwszy rodzic tego popełnienia jest głową w czasie zapasach, drugi rodzic zawiera zmian w plikach gąsienicowych, a trzecia (która może nie istnieć) zmiany w nieśledzonych plikach.Jest to częściowo wyjaśnione na stronie podręcznika „Dyskusja” .
źródło
Aby zobaczyć wszystkie pliki w skrytce (zarówno śledzone, jak i nieśledzone), dodałem ten alias do mojej konfiguracji:
Potrzeba jednego argumentu dotyczącego tego, który schowek chcesz wyświetlić. Zauważ, że nadal będzie przedstawiać go na dwóch listach wstecz.
if...fi
Sekcja zmienia argument bash $ 1 do 0, jeśli żaden została podjęta.źródło
Obejście problemu: przemieszczanie plików przed ich przechowywaniem będzie
git stash show -p
działać zgodnie z oczekiwaniami.Uwaga: w ten sposób daje możliwość dodawania interaktywnych części, oto jak .
Uwaga: upewnij się, że nie przygotowałeś wcześniej pracy, w przeciwnym razie nie będziesz w stanie jej odróżnić.
To może być przydatne.
źródło