Czy istnieje sposób użycia polecenia, takiego jak git ls-files
wyświetlanie tylko nieśledzonych plików?
Pytam o to, ponieważ używam następującego polecenia do przetwarzania wszystkich usuniętych plików:
git ls-files -d | xargs git rm
Chciałbym coś podobnego dla nieśledzonych plików:
git some-command --some-options | xargs git add
Byłem w stanie znaleźć -o
opcję git ls-files
, ale to nie jest to, czego chcę, ponieważ pokazuje również ignorowane pliki. Byłem także w stanie wymyślić następujące długie i brzydkie polecenie:
git status --porcelain | grep '^??' | cut -c4- | xargs git add
Wygląda na to, że musi istnieć lepsze polecenie, którego mogę tu użyć. A jeśli nie, to jak mogę utworzyć niestandardowe polecenia git?
git
git-status
git-rm
git-stage
git-ls-files
Wszyscy jesteśmy Monicą
źródło
źródło
git ls-files -d | xargs git rm
?git
działa tylko na pliki, nie ma możliwości śledzenia pustych folderów. Spróbujfind . -type d -empty
zamiast tego.Odpowiedzi:
Aby wyświetlić listę nieśledzonych plików, spróbuj:
Jeśli chcesz przesłać dane wyjściowe
xargs
, dobrze jest pamiętać o białych znakach, używającgit ls-files -z
ixargs -0
:Niezły alias do dodawania nie śledzonych plików:
Edycja: Dla odniesienia: git-ls-files
źródło
!
znaczy na początku linii aliasu lub gdzie to jest udokumentowane?git add *
zrobi to samo: dodaj wszystkie nieśledzone pliki oprócz standardowego (pliki, których ścieżki są objęte.gitignore
).[alias] lso = "!f() { cd $(git rev-parse --show-toplevel); git ls-files -o; }; f"
Jeśli chcesz tylko usunąć nieśledzone pliki, wykonaj następujące czynności:
dodaj
x
do tego, jeśli chcesz również dołączyć specjalnie zignorowane pliki. Używamgit clean -dfx
się wiele w ciągu dnia.Możesz stworzyć niestandardowy git, po prostu pisząc skrypt o nazwie
git-whatever
i mając go na swojej drodze.źródło
git add -A
lubgit add -u
(w zależności od tego, co ma dla ciebie większy sens)git add -A -n
zrobi co chcesz.-A
dodaje wszystkie nieśledzone pliki do repozytorium,-n
czyni to miejsce, wdry-run
którym dodawanie nie jest wykonywane, ale podaje się dane wyjściowe statusu z listą każdego pliku, który zostałby dodany.źródło
.gitignore
plikach, co zwykle jest tym, czego chcemy, ale jeśli niegit add -fAn
,.add '$file'
. Podczas gdygit ls-files --exclude-standard -o
daje gołe wyjście, gorące rurki.Akceptowana odpowiedź ulega awarii w nazwach plików ze spacją. Nie jestem w tej chwili pewien, jak zaktualizować polecenie aliasu, więc umieszczę tutaj ulepszoną wersję:
źródło
Wszystko jest bardzo proste
Aby uzyskać listę wszystkich nie śledzonych plików, użyj polecenia git status z opcją -u (--untracked-files)
źródło
--ignored
dogit status -u
poleceniaPodczas wyszukiwania plików, które potencjalnie można dodać. Wynika z
git show
tego, ale zawiera również wiele innych rzeczy. Poniższe polecenie jest przydatne, aby uzyskać tę samą listę plików, ale bez wszystkich innych rzeczy.Jest to przydatne w połączeniu z potokiem w celu znalezienia plików pasujących do określonego wzorca, a następnie przesłania go do potoku
git add
.źródło
Wiem, że to stare pytanie, ale jeśli chodzi o listę nieśledzonych plików, pomyślałem, że dodam jeszcze jedno, które zawiera także listy nieśledzonych folderów:
Możesz użyć operacji git clean z opcją -n (suchy bieg), aby pokazać, które pliki zostaną usunięte (w tym pliki .gitignore) przez:
git clean -xdn
Ma to tę zaletę, że pokazuje wszystkie pliki i wszystkie foldery , które nie są śledzone. Parametry:
x
- Pokazuje wszystkie nieśledzone pliki (w tym ignorowane przez git i inne, takie jak kompilacja itp.)d
- pokaż nieśledzone katalogin
- i co najważniejsze! - dryrun, tzn. nie usuwaj niczego, po prostu użyj czystego mechanizmu do wyświetlenia wyników.Może to być trochę niebezpieczne, aby zrobić to w ten sposób, jeśli zapomnisz
-n
. Więc zazwyczaj pseudonim to w git config.źródło
Wszystkie poprzednie odpowiedzi, które sprawdziłem, również zawierają listę plików do zatwierdzenia. Oto proste i łatwe rozwiązanie, które wyświetla tylko te pliki, które nie są jeszcze w repozytorium i nie podlegają
.gitignore
.lub
źródło
Myślę, że będzie tak samo, jak zamierzał oryginalny plakat:
git add .
źródło
git/svn add .
, kotek umiera.git add .
bezkarnie!.gitignore
poprawnie się konfigurujesz . Nadal jednak warto go unikaćgit add .
. Lepsze jestgit add -u
.