Как сказать, является ли файл прослеженным мерзавцем (кодом выхода оболочки)?

Есть ли способ сказать, прослеживается ли файл путем выполнения некоторых git команда и проверка ее кода выхода?

Другими словами: мерзавец отслеживает файл?

321
задан alex 21 June 2016 в 23:19
поделиться

4 ответа

попробуйте:

git ls-files --error-unmatch <file name>

завершится с 1, если файл не отслеживается

407
ответ дан 23 November 2019 в 00:58
поделиться

Попробуйте выполнить git status для файла. Он выдаст ошибку, если он не отслеживается git

PS$> git status foo.txt
error: pathspec 'foo.txt' did not match any file(s) known to git.
11
ответ дан 23 November 2019 в 00:58
поделиться

Я не знаю ни одной команды git, которая дает "плохой" код выхода, но кажется, что это простой способ сделать это - использовать команда git, которая не выводит данные для файла, который не отслеживается, например git-log или git-ls-files. Таким образом, вам действительно не нужно выполнять какой-либо синтаксический анализ, вы можете запустить его с помощью другой простой утилиты, такой как grep, чтобы увидеть, был ли какой-либо вывод.

Например,

git-ls-files test_file.c | grep.

завершится с нулевым кодом, если файл отслеживается, и с кодом выхода, равным единице, если файл не отслеживается.

6
ответ дан 23 November 2019 в 00:58
поделиться

EDIT

Если вам нужно использовать git из bash, есть опция --porcelain для git status:

--porcelain

Предоставьте вывод в стабильном, легко разбираемом формате для скриптов. В настоящее время это идентично с --short output, но гарантируется не изменится в будущем, что делает его безопасным для скриптов.

Вывод выглядит так:

> git status --porcelain
 M starthudson.sh
?? bla

Или если вы делаете только один файл за раз:

> git status --porcelain bla
?? bla

ORIGINAL

do:

git status

Вы увидите отчет о том, какие файлы были обновлены, а какие не отслеживаются.

Вы видите, что bla.sh отслеживается и изменен, а newbla не отслеживается:

# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#       modified:   bla.sh
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       newbla
no changes added to commit (use "git add" and/or "git commit -a")
15
ответ дан 23 November 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: