如何在提交时抑制“Changes not staged for commit”的输出?注意:
- 我知道可以使用
> /dev/null
,但我希望不要抑制其他内容。 - 我不是在谈论提交消息 - 我是在谈论它在终端上打印的内容。
如何在提交时抑制“Changes not staged for commit”的输出?注意:
> /dev/null
,但我希望不要抑制其他内容。经过在 git.git代码库中的一番探索,我很遗憾地告诉你,你需要设计一种方法来忽略脚本中的这些行。
在提交期间,如果你不使用--allow-empty
,git会通过那段代码:
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
,然后您就可以开始了?
git status
中,这是完全不同的问题。 - bperson[master 436246b] test 1 file changed, 1 insertion(+)
,因此不会包含“未提交的更改”;) - bperson