После небольшого копания в кодовой базе git.git, я боюсь, что вы должны разработать способ игнорировать эти строки в своем скрипте.
Во время фиксации, если вы не используете --allow-empty
, мерзавец будет проходить через that code:
if (!commitable && whence != FROM_MERGE && !allow_empty &&
!(amend && is_a_merge(current_head))) {
s->display_comment_prefix = old_display_comment_prefix;
run_status(stdout, index_file, prefix, 0, s);
...
return 0;
}
И run_status
делает следующую вещь:
switch (status_format) {
case STATUS_FORMAT_SHORT:
wt_shortstatus_print(s);
break;
case STATUS_FORMAT_PORCELAIN:
wt_porcelain_print(s);
break;
case STATUS_FORMAT_UNSPECIFIED:
die("BUG: finalize_deferred_config() should have been called");
break;
case STATUS_FORMAT_NONE:
case STATUS_FORMAT_LONG:
wt_status_print(s);
break;
}
}
STATUS_FORMAT_PORCELAIN
(использование --porcelain
) и STATUS_FORMAT_SHORT
(git config status.short true
) приведет к такому же уменьшенному выходу:
M bla.txt
и STATUS_FORMAT_LONG
(? И STATUS_FORMAT_NONE
, не знаю, почему), приведет к обычному выходу:
Changes not staged for commit:
modified: bla.txt
Тем не менее, давайте не будем отчаиваться, это программное обеспечение, мы говорим о том, что всегда есть (мне все еще нужно полностью протестировать это;))
Вы можете использовать --allow-empty
, чтобы получить пропуск от этой ветви кода и создать пустую фиксацию. Затем вы связываете это с крюком post-commit
, который проверяет, является ли последнее комманда пустым, если это так, крючок запускает git reset --hard HEAD~1
, и вам может быть хорошо идти?
Вы спрашиваете сообщение об объявлении по умолчанию, которое отображается? –
@AndrewC: Да .. – Mehrdad
Зачем беспокоиться? Это просто информация о файлах, которые были изменены, но не включены в коммит. Это полезно, когда вы готовите серию коммитов из данной измененной рабочей строки. – user3159253