Git: Списък само от непрочетени файлове (също потребителски команди)

Има ли начин да се използва команда като git ls-files за показване само на файлове без следа?

Причината да попитам е да използвам следната команда за обработка на всички изтрити файлове:

 git ls-files -d | xargs git rm 

Искам нещо подобно за невъзпроизводими файлове:

 git some-command --some-options | xargs git add 

Успях да намеря опцията -o за git ls-files , но това не е това, което искам, защото също така показва игнорирани файлове. Също така успях да измисля следната дълга и грозна команда:

 git status --porcelain | grep '^??' | cut -c4- | xargs git add 

Изглежда, че имам нужда от най-добрия екип, който мога да използвам тук. И ако това не се случи, как да създам собствени git команди?

277
27 сент. 27 jnylen комплект 2010-09-27 08:30 '10 в 8:30 ч. 2010-09-27 08:30
@ 9 отговора

За да получите списък с непознати файлове, опитайте:

 git ls-files --others --exclude-standard 

Ако имате нужда от xargs изход в xargs , то е разумно да използвате пространства, използващи git ls-files -z и xargs -0 :

 git ls-files -z -o --exclude-standard | xargs -0 git add 

Добър псевдоним за добавяне на непроследими файлове:

 au = !git add $(git ls-files -o --exclude-standard) 

Edit: За справка: git-ls-files

447
27 сент. отговорът е даден 27 септември. 2010-09-27 09:29 '10 в 9:29 2010-09-27 09:29

Ако искате да изтриете необработените файлове, направете следното:

 git clean -df 
border=0

добавете x към това, ако искате да включите и специално игнорирани файлове. Използвам git clean -dfx много през деня.

Можете да създадете персонализиран git, като просто напишете скрипт с името git-whatever и го имате във вашия път.

60
27 сент. отговорът е даден от Дъстин 27 септември. 2010-09-27 08:34 '10 в 8:34 ч. 2010-09-27 08:34

git add -A -n ще направи това, което искате. -A добавя всички необработени файлове към репо, -n го прави dry-run , където добавянето не се извършва, но се извежда списък на всички добавени файлове.

41
04 апр. отговор, даден от Майк Лококо 04 април 2012-04-04 17:37 '12 в 5:37 ч. 2012-04-04 17:37

Приетият отговор пада върху имената на файловете с интервал. Не мога да коментирам това (нисък резултат от stackoverflow досега) и не съм сигурен сега как да актуализираме командата за псевдоним, така че ще сложа подобрена версия тук:

 git ls-files -z -o --exclude-standard | xargs -0 git add 
27
14 дек. Отговорът е даден от youurayy 14 декември. 2011-12-14 17:31 '11 в 17:31 2011-12-14 17:31

Много е просто

За да получите списък на всички непроследени файлове, използвайте командата git status с опцията -u (-u ntracked-files)

 git status -u 
17
10 нояб. отговорът е даден от Валентина на 10 ноември. 2014-11-10 12:29 '14 в 12:29 2014-11-10 12:29

При търсене на файлове, които могат да бъдат добавени. Резултатът от git show прави това, но включва и много други неща. Следната команда е полезна за получаване на същия списък с файлове, но без всичко останало.

  git status --porcelain | grep "^?? " | sed -e 's/^[?]* //' 

Това е полезно, когато свързвате заедно, за да намерите файлове, които съвпадат с определен модел, а след това да се свържете с git add .

 git status --porcelain | grep "^?? " | sed -e 's/^[?]* //' | \ egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add 
5
17 июня '15 в 14:57 2015-06-17 14:57 отговор е даден от cmac 17 юни '15 в 14:57 2015-06-17 14:57

Знам, че това е стар въпрос, но от гледна точка на изброяване на непроследени файлове, аз си помислих, че ще добавя още един, който също изброява папки, които не могат да бъдат открити:

Можете да използвате операцията git clean с -n (пробно пускане), за да покажете кои файлове ще бъдат изтрити (включително .gitignore файлове):

git clean -xdn

Това има предимството да показва всички файлове и всички папки , които не се проследяват. Опции:

  • x - показва всички неотбелязани файлове (включително игнорирани git и други, като например изход за изграждане и др.)
  • d - показване на неизвестни директории
  • n - и най- важното! - dryrun, което всъщност не изтрива нищо, просто използвайте механизма за почистване, за да покажете резултатите.
3
28 февр. Отговорът е даден code_fodder 28 февруари. 2018-02-28 16:11 '18 в 16:11 ч. 2018-02-28 16:11

Всички предишни отговори, които проверих, също съдържат списък с файлове, които трябва да се поемат. Тук е просто и лесно решение, което изброява само тези файлове, които все още не са в репо и не подлежат на .gitignore .

 git status --porcelain | awk '/^\?\?/ { print $2; }' 
1
02 нояб. Отговорът е даден от Франк-Рене Шефер 02 ноември. 2018-11-02 15:26 '18 в 15:26 2018-11-02 15:26

Мисля, че ще бъде същият като този на първоначалния постер:

git add .

0
05 июня '12 в 0:36 2012-06-05 00:36 отговорът е даден от Тим Фулмър 05 юни 2012 г. в 0:36 ч. 2012-06-05 00:36

Други въпроси относно тагове или Ask a Question