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