git可以在"静音模式"下运行吗?

Jam*_*sev 96 git

是否可以在"静音"模式下执行任何git命令?例如,我可以说" git push origin"并且屏幕上看不到任何内容吗?

我想我可以将IO重定向到/dev/null(工作正常),但是.. git是否允许这样的东西自然?

下面是一个自动EOD提交的快速脚本,当我需要赶上火车并且不想在我的本地计算机上保留代码时使用

  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
Run Code Online (Sandbox Code Playgroud)

请告诉我.

Tho*_*rds 213

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

git commit --quiet
git push --quiet
Run Code Online (Sandbox Code Playgroud)

  • 您需要在命令后添加它.`git pull -q`或`git push origin master --quiet`.我在git 1.8.x上 (8认同)
  • @Mendhak,不起作用(至少它不是沉默的).例如,`git pull -q origin master>/dev/null`产生"Total 4(delta 3),reused 4(delta 3)".那是git 2.0.1. (7认同)
  • 如果你真的想要**NO**输出,请使用`git command>/dev/null 2>&1`.这会将stdout和stderr重定向到/ dev/null.`--quiet`选项用于生成简洁的输出,而不是用于完全抑制输出@Ankur (5认同)
  • 即使使用--queit(或-q),它仍会打印一些输出.例如,当使用git checkout -q(branch_name)时,如果它是第一次检出分支,它将打印一条消息,说明已经设置了新分支.是否有某种方式(某些标志)使用哪种输出可以被静音? (3认同)
  • 我似乎无法以这种方式使git commit保持沉默。它忽略任何一个标志。 (2认同)

ara*_*nid 18

将输出重定向到/ dev/null似乎是对我这样做的一种自然方式.虽然我在过去定义了一个这样的quiet_git shell函数用于cron作业:

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
}
Run Code Online (Sandbox Code Playgroud)

这将禁止stdout和stderr,除非git命令失败.它不漂亮; 事实上,stdout文件被忽略,它应该只是重定向到/ dev/null.尽管如此.然后你可以稍后在脚本中执行"quiet_git push"等操作.

  • 请看@ThomasEdwards答案,好多了 (10认同)

Han*_*ian 13

&> /dev/null在最后使用为您提供完全静默的git命令输出.

git fetch origin master &> /dev/null
Run Code Online (Sandbox Code Playgroud)

  • 仅在 csh 中,大多数人建议使用 bourne shell 进行 shell 脚本编写。 (2认同)

Von*_*onC 5

请注意,即使使用 --quiet,a git fetch(触发a git gc)也会产生一些输出.
那是因为git gc部分原因git fetch.

现在不一样了,开始git的2.1.1(9月2014):看提交6fceed3bea59d747c160972c67663e8b8c281229阮泰玉维战(pclouds)

获取:git-gc如果--quiet给出沉默

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);
Run Code Online (Sandbox Code Playgroud)