Может ли git работать в "бесшумном режиме"?
Возможно ли выполнить любую команду git в режиме "тихий"? Например, могу ли я сказать "git push origin
" и ничего не показывать на экране?
Я предполагаю, что я могу перенаправить IO на /dev/null
(отлично работает), но.. делает ли git что-то вроде этого естественным?
Ниже приведен быстрый script, который выполняет автоматическую фиксацию 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
Пожалуйста, дайте мне знать.
Ответы
Ответ 1
Перенаправление вывода в /dev/null кажется естественным способом сделать это для меня. Несмотря на то, что в прошлом я определял такую функцию shell_git, как это для использования в заданиях cron:
quiet_git() {
stdout=$(tempfile)
stderr=$(tempfile)
if ! git "[email protected]" </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. Работы, тем не менее. И тогда вы можете просто сделать "quiet_git push" и т.д. Позже в script.
Ответ 2
Вы можете использовать --quiet
или -q
, который также может использоваться для других команд Git:
git commit --quiet
git push --quiet
Ответ 3
Использование &> /dev/null
в конце дает вам полностью бесшумный вывод git.
git fetch origin master &> /dev/null
Ответ 4
Обратите внимание, что даже при --quiet
a git fetch
(который запускает git gc
) генерирует некоторый вывод.
Это из-за git gc
часть git fetch
.
Не больше, начиная git 2.1.1 (сентябрь 2014): см. совершить 6fceed3bea59d747c160972c67663e8b8c281229 от Nguyễn Thái Ngọc Duy (pclouds
)
fetch: silence 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);