Назад | Перейти на главную страницу

Git push приводит к тому, что удаленный компьютер не отслеживает файлы

В последнее время оба наших пульта 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 всегда является подкаталогом корневого каталога репо, это просто гарантирует, что рабочее дерево является правильным местом для его сброса.