В последнее время оба наших пульта Git (один - производственный сервер, а другой - промежуточный) вызывают проблемы при отправке изменений.
Обычно:
git add <list of untracked files>
git commit -m <message>
git push <remote> <remote active branch>
git status
On branch <active branch>
Untracked files:
(use "git add <file>..." to include in what will be committed)
.... all the files that have been committed ....
Мы не уверены, что могло измениться за последние недели, потому что раньше все работало нормально.
В настоящее время мы исправляем это, подключившись к серверу удаления и выполнив
git reset --hard HEAD
Почему это происходит и как это исправить?
Если я правильно понимаю вашу настройку, вы отправляете в репозиторий, отличный от чистого. Что происходит, так это то, что рабочий каталог не обновляется автоматически, когда вы это делаете. Вы правы, что git reset --hard
команда исправляет это. Причина, по которой ваш хук не запускается, заключается в том, что рабочий каталог и / или рабочее дерево могут быть неправильно установлены в середине извлечения. Чтобы исправить это, вы можете явно указать это. Есть переменная окружения, GIT_DIR
, который git устанавливает для хуков. Это соответствует вашему .git
папка. Используя это, мы можем правильно настроить ваше дерево git.
Вот сценарий, который я использовал для этого точного сценария раньше:
#!/bin/bash
git --work-tree "$GIT_DIR/.." reset --hard
Как видите, поскольку ваш .git
всегда является подкаталогом корневого каталога репо, это просто гарантирует, что рабочее дерево является правильным местом для его сброса.