#git
#git
Вопрос:
Мне нужно иметь файл в моем репозитории, который другие разработчики могут изменять в своей локальной копии, в то время как Git игнорирует эти изменения.
Не удается использовать git rm --cached <file>
, потому что файл удален с удаленного, что делает файл недоступным для будущих клонов / извлечений.
Не удается использовать git update-index --assume-unchanged <file>
nor git update-index --skip-worktree <file>
, потому что технически файл все еще отслеживается, поскольку git выдает это сообщение об ошибке при любых операциях переопределения рабочего дерева (например, git checkout
или git merge
), если разработчик изменяет файл:
«Пожалуйста, зафиксируйте свои изменения или сохраните их перед переключением ветвей. Прерывание»
Не удается добавить файл в .gitignore
, потому что он уже отслеживался.
Есть ли какая-либо операция Git, которую я могу использовать для достижения этой цели?
Спасибо.
Комментарии:
1. Мне любопытно, почему файл даже в репозитории? Если у каждого есть его собственная настроенная копия, на самом деле это не часть кодовой базы, а скорее конфигурационный файл, верно? Так почему бы не поместить шаблон в репозиторий вместо живой копии? (Чтобы было ясно, я все еще изучаю разработку программного обеспечения.)
2. @wjandrea Ваш ответ на ваш собственный вопрос. Правильно, это файл конфигурации шаблона, в который разработчик может вставить ключ API, например, но мы не хотим, чтобы этот API отправлялся в репозиторий.
3. Правильно, так почему вы помещаете его в репозиторий вместо, скажем, домашней папки пользователя?
Ответ №1:
Невозможно разрешить игнорируемые изменения в файле в локальной копии. В Git FAQ это подробно объясняется.
Если вы хотите использовать файл шаблона, не называйте его так же, как файл, которым вы хотите, чтобы он заканчивался. Назовите его как-нибудь по-другому, затем либо скопируйте его на место с помощью скрипта, либо позвольте пользователю скопировать его в нужное место и игнорировать фактический файл конфигурации при отслеживании шаблона.
Комментарии:
1. Это прискорбно. Хотя имеет смысл, почему это не работает. Спасибо!