8 ответов:
Если вы не хотите загромождать консоль сообщениями об ошибках, вы также можете запустить
git ls-files file_nameи затем проверить результат. Если git ничего не возвращает, то файл не отслеживается. Если он отслеживается, git вернет путь к файлу.
это удобно, если вы хотите объединить его в скрипт, например PowerShell:
$gitResult = (git ls-files $_) | out-string if ($gitResult.length -ne 0) { ## do stuff with the tracked file }
EDIT
Если вам нужно использовать git от bash есть до
git status:--фарфор
дайте выход в стабилизированном, легк-к-проанализируйте формат для файлы сценариев. В настоящее время это идентично к --короткий выход, но гарантирован чтобы не измениться в будущем, делая это безопасен для скриптов.
вывод выглядит так:
> git status --porcelain M starthudson.sh ?? blaили если вы делаете только один файл за один раз:
> git status --porcelain bla ?? bla
оригинал
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")
попробуй
git statusна файл. Он будет печатать ошибку, если она не отслеживается gitPS$> git status foo.txt error: pathspec 'foo.txt' did not match any file(s) known to git.
Я не знаю ни одной команды git, которая дает "плохой" код выхода, но кажется, что простой способ сделать это-использовать команду git, которая не дает вывода для файла, который не отслеживается, например git-log или git-ls-files. Таким образом, вам не нужно делать какой-либо разбор, вы можете запустить его через другую простую утилиту, такую как grep, чтобы узнать, есть ли какой-либо выход.
например,
git-ls-files test_file.c / grep .
выйдет с нулевой код, если файл отслеживается, но код выхода одного, если файл не отслеживается.
Я предлагаю таможни псевдоним вы
.gitconfig.надо способ:
1) с помощью команды git:
git config --global alias.check-file <command>2) редактирование
~/.gitconfigи добавьте эту строку в раздел псевдонимов:[alias] check-file = "!f() { if [ $# -eq 0 ]; then echo 'Filename missing!'; else tracked=$(git ls-files ); if [[ -z ${tracked} ]]; then echo 'File not tracked'; else echo 'File tracked'; fi; fi; }; f"после запуска команды (1) или сохраненного файла (2), на вашем рабочем пространстве вы можете проверить его:
$ git check-file $ Filename missing $ git check-file README.md $ File tracked $ git check-file foo $ File not tracked
просто мои два цента:
git ls-files | grep -x relative/pathздесь
relative/pathможно легко определить нажатиемtabв оболочке автоматического завершения. Добавьте дополнительный| wc -lчтобы получить 1 или 0 выход.
используя
git logдаст информацию об этом. Если файл отслеживается в Git команда показывает некоторые результаты(логи). Иначе он пуст.например, если файл отслеживается git,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js commit ad9180b772d5c64dcd79a6cbb9487bd2ef08cbfc Author: User <[email protected]> Date: Mon Feb 20 07:45:04 2017 -0600 fix eslint indentation errors .... ....Если файл не отслеживается git,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js root@user-ubuntu:~/project-repo-directory#
Comments