Будет ли git-rm --cached удалять файлы рабочего дерева другого пользователя, когда они тянут - PullRequest
17 голосов
/ 23 июля 2010

Я хочу прекратить отслеживание файлов, но при этом сохранить их в моем рабочем дереве.

Я понял, что git rm --cached FILE позволит мне это сделать. Однако, если кто-то еще потянет это изменение, их локальные копии будут удалены?

Ответы [ 2 ]

8 голосов
/ 23 июля 2010

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

Однако, если удаленные пользователи внесли локальные изменения в эти файлыони не будут удалены, так как pull приведет к конфликту слияния.

Как предполагает Jefromi в своем комментарии, в то время как файлы удаляются на сторонних пользователях,их можно легко восстановить - ведь они находятся под контролем версий, не так ли?;-) Файлы могут быть получены с помощью git checkout <revision> -- <files...>.В качестве ревизии вы можете указать идентификатор предыдущего коммита, для извлечения он сохраняется в ORIG_HEAD (подробности см. в этом вопросе ):

git checkout ORIG_HEAD -- removed_file
1 голос
/ 19 апреля 2014

В таком случае я бы предпочел игнорировать их локально * только 1002 *:

Если они уже отслежены:

git update-index --skip-worktree FILE

Если они не отслежены: добавьте их в свойлокальный исключаемый файл

echo "FILE" >> .git/info/exclude

Вы также можете иметь глобальный .gitignore, если это то, что вы будете делать для всех своих репозиториев (например, * ~)

...