Я работал над репозиторием на моей учетной записи GitHub, и это проблема, на которую я наткнулся.
- Node.js проект с папкой с несколькими установленными пакетами npm
- Пакеты находились в папке
node_modules
- Добавил эту папку в репозиторий git и нажал код на github (в то время не думал о части npm)
- Понял, что вам действительно не нужна эта папка, чтобы быть частью кода
- Удалил эту папку, нажал ее
В этом случае размер полного репозитория git был около 6 МБ, где фактический код (все, кроме этой папки) был всего около 300 КБ.
Теперь то, что я ищу в конце, - это способ избавиться от деталей этой папки пакета от истории git, поэтому, если кто-то ее клонирует, им не нужно загружать историю с размером в 6 Мб, где только фактическая файлы, которые они получат с последнего фиксации, будут 300 КБ.
Я искал возможные решения для этого и пробовал эти 2 метода
- Удалить файл из репозитория git (история)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Кажется, что Gist работал, где после запуска script он показал, что он избавился от этой папки, и после этого он показал, что было изменено 50 разных коммитов. Но это не позволило мне нажать этот код. Когда я попытался нажать, он сказал Branch up to date
, но показал, что 50 коммитов были изменены на git status
. Другие 2 метода тоже не помогли.
Теперь, хотя он показал, что он избавился от этой истории папок, когда я проверил размер этого репо на моем локальном хосте, он все еще находился около 6 МБ. (Я также удалил папку refs/original
, но не видел изменения размера репо).
То, что я хочу уточнить, - это способ избавиться от не только истории фиксации (которая является единственной вещью, которая, как мне кажется, произошла), но и тех файлов git, которые предполагают, что нужно откатить.
Давайте скажем, что решение представлено для этого и применяется на моем локальном хосте, но не может быть воспроизведено в этом репо GitHub, можно ли клонировать это репо, откат к первому фиксатору выполнить трюк и нажать его (или это означает что git будет по-прежнему иметь историю всех этих коммитов? - aka. 6MB).
Моя конечная цель заключается в том, чтобы в основном найти лучший способ избавиться от содержимого папки из git, чтобы пользователь не загружал вещи на 6 МБ и, возможно, имел другие коммиты, которые никогда не касались (что почти все из них) в истории git.
Как я могу это сделать?