git reset --hard, похоже, игнорирует .git / info / exclude - PullRequest
4 голосов
/ 08 ноября 2011

У нас есть общий каталог (назовите его / shared), который мы автоматически обновляем в соответствии с нашей главной веткой git, выполняя эти команды всякий раз, когда есть толчок к мастеру:

   git reset --hard HEAD
   git clean -f -d
   git pull

Это работает по большей части. Однако есть каталог / shared / media, к которому мы не хотим прикоснуться, даже если в git включена символическая ссылка «media».

Я добавил «media» в .git / info / exclude, но независимо от того, «git reset --hard HEAD» удаляет / shared / media и заменяет его проверенной символической ссылкой.

Есть ли способ заставить "git reset --hard HEAD" оставить этот каталог в покое, кроме, например, убрав его заранее и восстановив потом?

Ответы [ 2 ]

7 голосов
/ 08 ноября 2011

git update-index --skip-worktree <file> должен сделать свое дело (см. Аналогичный вопрос: git update-index --assume-неизменен и git reset )

2 голосов
/ 08 ноября 2011

Вы не можете игнорировать путь, в котором хранится фактический контент в репозитории git.Git будет соблюдать изменения отслеживаемого дерева.Игнорирование влияет только на попытки начать отслеживание нового контента, требуя add -f для фактического хранения нового контента.

Однако это верно, если вы игнорируете путь с .gitignore, .git/info/exclude или через core.excludesfile configuration.

Если вы не хотите, чтобы ваш медиа-каталог был удален путем аппаратного сброса, вам нужно удалить конфликтующий путь из хранилища.За исключением явного сброса только других путей, обходного пути нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...