Я создал несколько удобных псевдонимов git, чтобы вывести список неподготовленных и промежуточных файлов:
git config --global alias.unstaged 'diff --name-only'
git config --global alias.staged 'diff --name-only --cached'
Тогда вы можете легко сделать такие вещи, как:
[[ -n "$(git unstaged)" ]] && echo unstaged files || echo NO unstaged files
[[ -n "$(git staged)" ]] && echo staged files || echo NO staged files
Вы можете сделать это большедля чтения, создав скрипт где-то на вашем PATH
с именем git-has
:
#!/bin/bash
[[ $(git "$@" | wc -c) -ne 0 ]]
Теперь приведенные выше примеры можно упростить до:
git has unstaged && echo unstaged files || echo NO unstaged files
git has staged && echo staged files || echo NO staged files
Для полноты здесьпохожие псевдонимы для неотслеживаемых и игнорируемых файлов:
git config --global alias.untracked 'ls-files --exclude-standard --others'
git config --global alias.ignored 'ls-files --exclude-standard --others --ignored'