1. ホーム
  2. git

[解決済み] gitは "サイレントモード "で動作しますか?

2022-08-02 19:27:44

質問

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

教えてください。

どのように解決するのですか?

出力を /dev/null にリダイレクトするのは、私にとっては自然な方法のように思えます。私は過去に cron ジョブで使用するために、このような quiet_git シェル関数を定義したことがあります。

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
}

これは、gitコマンドが失敗しない限り、stdoutとstderrを抑止するものです。実際、stdout ファイルは無視され、/dev/null にリダイレクトされるだけであるべきです。しかし、うまくいきます。そして、スクリプトの後半で "quiet_git push" 等を実行すればよいのです。