Чому б не використовувати вихідні коди? Якщо сховище git існує в поточному каталозі, тоді git branchі git tagкоманди повертають вихідний код 0; інакше повернеться ненульовий код виходу. Таким чином, ви можете визначити, чи існує сховище git чи ні. Просто ви можете запустити:
git tag > /dev/null 2>&1 && [ $? -eq 0 ]
Перевага : Flexibe. Він працює як для голих, так і для не голих сховищ, а також для sh, zsh та bash.
Пояснення
git tag: Отримання тегів репозиторію, щоб визначити, існує чи ні.
> /dev/null 2>&1: Заборона друкувати що-небудь, включаючи нормальні та помилки.
[ $? -eq 0 ]: Перевірте, чи повернулась попередня команда з кодом виходу 0 чи ні. Як ви можете знати, кожен ненульовий вихід означає, що трапилося щось погане. $?отримує код виходу попередньої команди, і [, -eqі ]виконує порівняння.
Наприклад, ви можете створити файл, названий check-git-repoіз таким вмістом, зробити його виконуваним і запустити його:
#!/bin/sh
if git tag > /dev/null 2>&1 && [ $? -eq 0 ]; then
echo "Repository exists!";
else
echo "No repository here.";
fi