Удалить папку и ее содержимое из истории git/GitHub

Я работал над репозиторием в своей учетной записи GitHub и столкнулся с этой проблемой.

  • Проект Node.js с папкой с несколькими установленными пакетами npm
  • Пакеты находились в папке node_modules
  • Добавил эту папку в репозиторий git и отправил код на github (не был думал о части npm в то время)
  • Понял, что вам действительно не нужно, чтобы эта папка была частью кода
  • Удалил эту папку, отправил ее

В этом случае размер общего Репозиторий git был около 6 МБ, тогда как фактический код (все, кроме этой папки) был всего около 300 КБ.

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

Я искал возможные решения для этого и пробовал эти 2 метода

Похоже, что Gist работал, когда после запуска скрипта он показал, что он избавился от этой папки, а затем показал, что были изменены 50 различных коммитов. Но это не позволило мне ввести этот код.Когда я попытался нажать его, он сказал Ветвь обновлена, но показало, что 50 коммитов были изменены при статусе git. Остальные 2 способа тоже не помогли.

Теперь, несмотря на то, что он показал, что он избавился от истории этой папки, когда я проверил размер этого репозитория на своем локальном хосте, он все еще составлял около 6 МБ. (Я также удалил папку refs/original, но не увидел изменения размера репо).

Я хочу уточнить, есть ли способ избавиться не только от истории коммитов (это единственное, что, как я думаю, произошло), но и от тех файлов, которые git сохраняет, предполагая, что кто-то хочет откатиться.

Допустим, для этого представлено решение, которое применяется на моем локальном хосте, но не может быть воспроизведено в этом репозитории GitHub. Можно ли клонировать этот репозиторий, откатиться до первого коммита, выполнить трюк и нажать что у git все еще будет история всех этих коммитов?

Моя конечная цель состоит в том, чтобы найти лучший способ избавиться от содержимого папки из git, чтобы пользователю не приходилось загружать файлы размером 6 МБ и при этом, возможно, иметь другие коммиты, которые никогда не касались папки модулей. (это почти все) в истории git.

Как мне это сделать?

283
задан Community 23 May 2017 в 01:47
поделиться