Предварительно совершить крюк, как это должно тревогу по поводу оставшихся файлов:
#!/bin/bash
. git-sh-setup # for 'die' cmd
git status --porcelain | while IFS= read -r line;
do
if [[ $line == \?\?* ]] ; then # if the file begins with ?? it's untracked by git
die "Uncommited files left!" # this will always terminate commit
# say "Uncommited files left!" # this will just print the warning
fi
done
Просто add this to your repo's pre-commit hooks и вуали :)
EDIT: Вы должны также рассмотреть возможность использования некоторой непрерывной интеграции инструментария, как Hudson или BuildBot - он может выполнять намного более всестороннюю проверку, а затем ищет недостающие файлы :)
EDIT2: к сожалению, мне не удалось использовать чтение внутри цикла, поэтому я думаю возможно, не удастся заставить этот крючок запросить ваше действие.
Перед тем, как совершать операции, всегда выполняйте 'git status', вы всегда совершаете слепо, не проверяя, что в вашем индексе (чтобы быть совершенным)? Кроме того, это то, что «git commit -a' делает ... Зафиксируйте каждый неисчерпаемый файл в рабочем дереве. – KurzedMetal
@KurzedMetal, 'git commit -a' не рассматривает файлы без следа - привести часть руководства, описывающего опцию' --all': «Сообщите команде автоматически создавать файлы, которые были изменены и удалены, но новые файлы, о которых вы не сказали git, не затрагиваются ». – kostix
Да, моя ошибка там, все еще, выполняющая« git status »до того, как рекомендуется« git commit ». Если вы вслепую «git add.» Или что-то в этом роде, вы можете добавить ненужный мусор к истории проекта. Который нелегко исправить, если он нажат на пульт. – KurzedMetal