Por que não usar códigos de saída? Se um repositório git existir no diretório atual, os comandos git branche git tagretornarão o código de saída 0; caso contrário, um código de saída diferente de zero será retornado. Dessa forma, você pode determinar se um repositório git existe ou não. Simplesmente, você pode executar:
git tag > /dev/null 2>&1 && [ $? -eq 0 ]
Vantagem : Flexibe. Ele funciona para repositórios vazios e não vazios e em sh, zsh e bash.
Explicação
git tag: Obtendo tags do repositório para determinar se existe ou não.
> /dev/null 2>&1: Impedindo a impressão de qualquer coisa, incluindo saídas normais e de erro.
[ $? -eq 0 ]: Verifique se o comando anterior retornou com o código de saída 0 ou não. Como você deve saber, toda saída diferente de zero significa que algo de ruim aconteceu. $?recebe o código de saída do comando anterior, e [, -eqe ]realizar a comparação.
Como exemplo, você pode criar um arquivo nomeado check-git-repocom o seguinte conteúdo, torná-lo executável e executá-lo:
#!/bin/sh
if git tag > /dev/null 2>&1 && [ $? -eq 0 ]; then
echo "Repository exists!";
else
echo "No repository here.";
fi