Я хочу прекратить отслеживать файлы, но по-прежнему хранить их в своем рабочем дереве.
Я понял, что git rm --cached FILE
позволит мне это сделать. Однако, если кто-то другой потребует это изменение, будут ли удалены его локальные копии?
Я хочу прекратить отслеживать файлы, но по-прежнему хранить их в своем рабочем дереве.
Я понял, что git rm --cached FILE
позволит мне это сделать. Однако, если кто-то другой потребует это изменение, будут ли удалены его локальные копии?
Да, их копии будут автоматически удалены. Представьте, если бы этого удаления не произошло - тогда рабочие копии всех пользователей были бы засорены горами удаленных файлов, которые больше не нужны.
Однако, если удаленные пользователи внесли локальные изменения в эти файлы, они не будут удалены, поскольку pull
приведет к конфликту слияния.
Как предлагает Джефроми в своем комментарии, хотя файлы удаляются на стороне других пользователей, их можно легко восстановить - они находятся под контролем версий, не так ли? ;-) Файлы могут быть получены git checkout <revision> -- <files...>
. В качестве ревизии вы можете указать идентификатор предыдущей фиксации, для извлечения он сохраняется в ORIG_HEAD
(см. этот вопрос для подробностей):
git checkout ORIG_HEAD -- removed_file
git checkout HEAD^ <path>
.
- person Cascabel; 23.07.2010
В таком случае я бы предпочел игнорировать их только локально:
Если они уже отслеживаются:
git update-index --skip-worktree FILE
Если они не отслеживаются: добавьте их в свой локальный файл исключения.
echo "FILE" >> .git/info/exclude
Вы также можете иметь глобальный .gitignore, если это что-то, что вы будете делать для всех своих репозиториев (например, * ~)