Удаление файлов из локального не удаленного

#git

#git

Вопрос:

В удаленном репозитории тысячи файлов, но я работаю только с несколькими. Как мне удалить все ненужные файлы (из git и папки) из локального репозитория, но не из удаленного репозитория? Спасибо за помощь!

Структура репозитория:

 A/
  AA/
    aa1.code
    aa2.code
    ...
B/
  bb1.code
  ...
root1.code
root2.code
...
  

… Мне нужны (например) только файлы root1.code и A /AA/aa1.code

Комментарии:

1. Каково содержимое этого репозитория? текст? код? несколько проектов или модулей, созданных вместе в одном репозитории?

Ответ №1:

Быстрый ответ: вы не можете этого сделать. Репозиторий — это репозиторий. Если вы удаляете файлы локально, они будут удалены на удаленном сервере при внесении изменений.

Вероятно, есть способы обойти проблему, но это было бы нецелесообразно. Например, вы могли бы иметь свою собственную локальную ветку и использовать какое-то решение IDE в этой ветке, структура проекта которого отображает только нужные вам файлы. Это было бы возможно в чем-то вроде Visual Studio, но, конечно, вы не смогли бы скомпилировать их без зависимостей.

Ответ №2:

Вы можете использовать разреженные извлечения, чтобы извлекать только те файлы, которые вам нужны.

 git clone --no-checkout remote
git sparse-checkout init --cone
git sparse-checkout set <path1> <path2> ...
  

Существует очень новая опция для клонирования с фильтром, таким образом, ваши .git старые файлы будут ограничены только теми файлами и историей, которые вы хотите. Проверьте ссылку для получения очень подробного ответа на unix stackexchange. Похоже ---filter , он должен поддерживаться вашим git remote.

 git clone --no-checkout --filter=blob:none remote
git sparse-checkout init --cone
git sparse-checkout set <path1> <path2> ...
  

Более подробная информация в этом сообщении в блоге с несколькими отличными примерами о том, как настроить конфигурацию разреженной проверки.

Ответ №3:

На мой взгляд, вам нужно скопировать весь каталог для работы с файлами. Таким образом, удалить их невозможно, потому что следующий запрос на извлечение снова скопирует их в ваш локальный клон.

Возможно, используйте что-то вроде подкаталогов в git.