Будет ли 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, если это то, что вы будете делать для всех своих репозиториев (например, *~)

Другие вопросы по тегам