如何压制"未提交的更改"?

时间:2015-11-28 20:41:56

标签: git commit git-commit

如何禁止"未提交的更改"提交时的输出?请注意:

  • 我知道我可以做> /dev/null,但我希望不要压制其他事情。
  • 我不是在谈论提交消息 - 我正在谈论它打印到终端的内容。

1 个答案:

答案 0 :(得分:1)

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_SHORTgit config status.short true)会产生相同的缩小输出:

 M bla.txt

STATUS_FORMAT_LONG(AND STATUS_FORMAT_NONE,不知道为什么?),会产生通常的输出:

Changes not staged for commit:
    modified:   bla.txt

那就是说,让我们不要绝望,这是我们所谈论的软件,总是有办法绕过问题(我仍然需要完全测试这个;)

您可以使用--allow-empty来传递该代码分支并创建一个空提交。然后,你用一个post-commit钩子链接它,检查最新的提交是否为空,如果是,钩子运行git reset --hard HEAD~1你可能会好转吗?