git能在“中”运行吗;静默模式;?

git能在“中”运行吗;静默模式;?,git,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

可以在“静默”模式下执行任何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
请告诉我。

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

git commit --quiet
git push --quiet

将输出重定向到/dev/null对我来说似乎是一种很自然的方式。尽管我在过去定义了一个安静的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
}
quiet\u git(){
标准输出=$(临时文件)
stderr=$(临时文件)
如果!git“$@”$stdout 2>$stderr;那么
类别$stderr>&2
rm-f$stdout$stderr
出口1
fi
rm-f$stdout$stderr
}
这将抑制stdout和stderr,除非git命令失败。它不漂亮;事实上,stdout文件被忽略,它应该将其重定向到/dev/null。不过,这很管用。然后,您可以在脚本后面执行“quiet\u git push”等操作。

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

不再是了,从git 2.1.1开始(2014年9月):参见

fetch:silent
git gc
如果
--silent
被给出 :

argv_array_pushl(&argv_gc_auto,“gc”,“--auto”,NULL);
如果(详细程度<0)
argv_数组_推送(&argv_gc_auto,“--quiet”);
运行命令\u v\u opt(argv\u gc\u auto.argv,run\u GIT\u CMD);

在最后使用
&>/dev/null
可以获得完全静默的git命令输出

git fetch origin master &> /dev/null

无关:您可以执行以下操作,而不是将cmds包装在cd$i、cd..中:for i in*;do(cd$i;…;);完成并在子shell中运行cd。这是不太容易损坏的。你想把“正确”的标记移到汤玛斯的答案上吗?我不知道Linus在开发git时有什么想法,因为它显然打破了UNIX的一条基本规则,即沉默就是黄金。这里没有回答的问题是,是否有可能在git的配置中设置一些设置,使其成为一个好的UNIX公民,一劳永逸。请参阅@ThomasEdwards answer,我似乎无法以这种方式使git commit保持沉默。它忽略任一标志。您需要在命令后添加它
git pull-q
git push-origin-master--quiet
。我在Git1.8上。x@Mendhak,不起作用(至少它不是无声的)。例如,
gitpull-qoriginmaster>/dev/null
产生“总计4(增量3),重用4(增量3)”。Git2.0.1就是这样。即使使用--queit(或-q),它仍然会打印一些输出。例如,当使用git checkout-q(branch_name)时,如果是第一次签出分支,它将打印一条消息,说明新分支已被设置。是否有某种方式(某些标志)可以使所有此类输出静音?如果您确实不想要任何输出,请使用
git命令>/dev/null 2>&1
。这会将stdout和stderr重定向到/dev/null。
--quiet
选项用于生成简洁的输出,而不是在csh中完全禁止输出@AnkurOnly,大多数建议使用bourne shells编写shell脚本。@hd1否,
&
是bash IO重定向操作符。看看这里的3.6@HansKrisian是的,bash将csh的交互功能和sh的脚本结合在一起。引用同一个howto:“Bash是一个与sh兼容的shell,它包含了kornshell(ksh)和csh(csh)中的有用功能”。其目的是删除信息性消息,但仍然显示错误。我还没有研究git在什么去stdout和什么去stderr方面表现得有多好,但是重定向这两个东西闻起来是个非常糟糕的主意。
git fetch origin master &> /dev/null