A maioria dos programas tem duas saídas: stdout e stderr. stdout é onde a informação "principal" vai. stderr é usado para, bem, erros. Ele também é usado para diversas saídas não importantes, e também coisas como prompts de usuário, às vezes.
Para capturar tudo isso, você precisa redirecionar o stderr para o stdout.
somecmd arg1 arg2 arg3 >somefile 2>&1
Ou para capturar stderr para um arquivo separado:
somecmd arg1 arg2 arg3 >stdout.txt 2>stderr.txt
Esteja ciente de que é possível para um programa usar outras saídas que stdout / stderr. Ele pode determinar seu console e basicamente "forçar" a saída lá. No entanto, isso é extremamente incomum, e o acima funcionará em 99% das situações.
Uma coisa a ter em mente se você redirecionar stdout e stderr para o mesmo arquivo é stdout e stderr buffer de forma diferente, assim não será o mesmo em um arquivo de log como na tela (as linhas serão fora de serviço). Além disso, para sua instância específica, sua saída será parecida com lixo. git faz um monte de manipulação de terminal (para o indicador de progresso) e em um arquivo de log vai parecer horrível.
EDITAR
De man git-clone
:
--progress
Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified. This flag forces progress status even if the standard error stream is not directed to a terminal