Фатальный: не репозиторий git: ошибка ".git"

Я создал крюк pre-commit, который берет дамп базы данных и сохраняет его в файле в моем приложении/папке, который также находится в репозитории git, после его сохранения я добавляю файл в список фиксации. Ниже приведен код в файле pre-commit

    D:/xampp/mysql/bin/mysqldump -u root -pxyz --skip-extended-insert [database] > D:/xampp/htdocs/app/application/[database].sql

cd D:/xampp/htdocs/app/application
git add [database].sql

Я попытался запустить код pre-commit прямо через командную строку, он работает без какой-либо ошибки, но когда я пытаюсь выполнить код через git bash, я получаю эту ошибку

fatal: Not a git repository: '.git' 

Я принимаю его из-за команды git, используемой в файле предварительной фиксации, может ли кто-нибудь сказать мне, что не так в этом файле, и как я должен его изменить?

Ответ 1

В сомнении, в вашем крюке, задайте явно git-dir и work-tree параметры:

git --git-dir .git --work-tree . add ...

Вы даже можете указать полный путь:

git --git-dir D:/xampp/htdocs/app/application/.git --work-tree D:/xampp/htdocs/app/application/. add ...

Таким образом, вы исключаете любую проблему с окружающей средой с теми git-dir или work-tree, застрявшими в другом пути, который не является одним из репо, к которому вы клонируете. См. " "git pull" с помощью git post-update hook" для примера этой проблемы.

Ответ 2

У меня была такая же проблема, как и вы, и нашел это решение:

вместо выполнения

cd D:/xampp/htdocs/app/application
git add [database].sql

i просто сделал

git add D:/xampp/htdocs/app/application/[database].sql

таким образом я не раздражал git cd-ing в другую папку:)

Ответ 3

Убедитесь, что вы находитесь в каталоге, в котором есть .git-папка? чтобы убедиться, попробуйте запустить

git status

и посмотрим, что произойдет. если вы все еще получите такое сообщение, я думаю, что ваш git еще не настроен.

выполните следующие шаги для его настройки:

git init
git add .
git commit -m "your message"
git push