Ваша ошибка в том, что вы не цитируете $mf
.Измените его на "$mf"
.Хотя, возможно, есть и более эффективные способы, чем вывод результатов удобочитаемой команды ... вы можете взглянуть на git status --porcelain
, например.Или даже git diff --cached <path>
, и просто проверьте код выхода, например:
if ! git diff --quiet --cached <path>; then
# the file was modified; do stuff
fi
Я думаю, что Эмбер, возможно, ввела вас в заблуждение: вы должны использовать --cached
, потому что если измененияне в стадии, то, что касается этого коммита, изменений нет, поэтому я предполагаю, что вы не хотите больше ничего делать.
И, конечно, я не знаю ваш проект, но яЯ не уверен, почему вы делаете что-то подобное - обычно вы не хотите регистрировать автоматически сгенерированный контент, просто упростите восстановление из того, что было зарегистрировано.
Что касается вашей последней проблемыфайл изменен, но не добавлен в коммит, я не могу воспроизвести его на игрушечном примере.Я сделал это как ловушку перед фиксацией:
#!/bin/bash
touch z
git add z
и сделал коммит, а z был, как и ожидалось, создан, добавлен и зафиксирован.