Git 能在“静音模式”下运行吗?

是否可以在“静默”模式下执行任何 git 命令?例如,我可以说“ git push origin”而看不到任何显示在屏幕上吗?

我想我可以将 IO 重定向到 /dev/null(工作得很好) ,但是. . git 是否自然地允许这样的事情发生?

下面是一个快速脚本,做自动爆炸物处理提交,使用时,我需要赶上火车,不想在我的本地计算机上留下代码

  1 clear
2
3 cd
4 cd repo/active
5
6 for i in *
7 do
8   cd $i
9   echo "Pushing " $i
10   git add . -A >> /dev/null
11   git commit -a -m "EOD automatic commit" >> /dev/null
12   git push origin >> /dev/null
13   echo
14   cd ..
15 done

请告诉我。

86007 次浏览

您可以使用 --quiet-q,它们也可以用于其他 Git 命令:

git commit --quiet
git push --quiet

将输出重定向到/dev/null 对我来说似乎是一种很自然的方式。尽管我在过去定义了一个象这样的、用于 cron 作业的 static _ git shell 函数:

quiet_git() {
stdout=$(tempfile)
stderr=$(tempfile)


if ! git "$@" </dev/null >$stdout 2>$stderr; then
cat $stderr >&2
rm -f $stdout $stderr
exit 1
fi


rm -f $stdout $stderr
}

这将禁止 stdout 和 stderr,除非 git 命令失败。这并不好看; 实际上,stdout 文件被忽略了,它应该只是将其重定向到/dev/null。不过很管用。然后你可以稍后在脚本中执行“ static _ git push”等操作。

注意,即使是 --quietgit fetch(触发 git gc)也会产生一些输出。
这是因为 git fetchgit gc部分。

不再是这样了,从 git 2.1.1(2014年9月)开始: 参见 易懂的泰语(pclouds)中的 承诺6fceed3bea59d747c160972c67663e8b8c281229

如果给定 --quiet,则获取: 沉默 git-gc

builtin/fetch.c :

argv_array_pushl(&argv_gc_auto, "gc", "--auto", NULL);
if (verbosity < 0)
argv_array_push(&argv_gc_auto, "--quiet");
run_command_v_opt(argv_gc_auto.argv, RUN_GIT_CMD);

最后使用 &> /dev/null可以得到一个完全静默的 git 命令输出。

git fetch origin master &> /dev/null