如何压制"Changes not staged for commit"?
How to suppress "Changes not staged for commit"?
如何在提交时抑制 "Changes not staged for commit" 输出?注意:
- 我知道我可以做到
> /dev/null
,但我希望不要压抑其他事情。
- 我不是在谈论 提交消息 -- 我是在谈论它打印到终端的内容。
在 git.git 代码库中进行了一些挖掘之后,恐怕您应该设计一种方法来忽略脚本中的这些行。
在提交期间,如果您不使用 --allow-empty
,git 将通过 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
and STATUS_FORMAT_LONG
(AND STATUS_FORMAT_NONE
,不知道为什么?),将导致通常的输出:
Changes not staged for commit:
modified: bla.txt
也就是说,我们不要绝望,这是我们正在谈论的软件,总有解决问题的方法(不过我仍然需要完全测试它;))
您可以使用 --allow-empty
来通过该代码分支并创建一个空提交。然后,你用一个 post-commit
钩子链接它,检查最新提交是否为空,如果是,钩子运行 git reset --hard HEAD~1
你可以开始了吗?
如何在提交时抑制 "Changes not staged for commit" 输出?注意:
- 我知道我可以做到
> /dev/null
,但我希望不要压抑其他事情。 - 我不是在谈论 提交消息 -- 我是在谈论它打印到终端的内容。
在 git.git 代码库中进行了一些挖掘之后,恐怕您应该设计一种方法来忽略脚本中的这些行。
在提交期间,如果您不使用 --allow-empty
,git 将通过 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
and STATUS_FORMAT_LONG
(AND STATUS_FORMAT_NONE
,不知道为什么?),将导致通常的输出:
Changes not staged for commit:
modified: bla.txt
也就是说,我们不要绝望,这是我们正在谈论的软件,总有解决问题的方法(不过我仍然需要完全测试它;))
您可以使用 --allow-empty
来通过该代码分支并创建一个空提交。然后,你用一个 post-commit
钩子链接它,检查最新提交是否为空,如果是,钩子运行 git reset --hard HEAD~1
你可以开始了吗?