cd "$D" || ...
é alterar o diretório OU fazer isso outra coisa, o que significa que se o cd
for bem-sucedido (o que deveria), git
não será executado.
cd "$D" && git ...
seria mais comum para o cd-and-do-this-thing. ( bash -x
é útil para depurar esse tipo de coisa).