Git удалить файл и историю из всех веток - PullRequest
0 голосов
/ 27 декабря 2018

Я создал частный репозиторий на gitlab более года назад, и со временем репо значительно выросло.Оглядываясь назад, я допустил одну ошибку - поместить большие репозитории в репозиторий.Я не знал о git-lfs, и репо в настоящее время довольно существенно выросло.

Так что я думаю, что возможный подход будет следующим:

  • Удалите файлы вместе с ихистория из всего хранилища (также для всех ветвей.
  • Включить git-lfs (снова как-то для всех ветвей).
  • Добавить эти файлы (снова для всех ветвей).

Ситуация такова, что у меня есть довольно много активных веток в хранилище. Есть ли способ сделать это как-то во всех ветвях с минимальным набором команд?

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

1 Ответ

0 голосов
/ 27 декабря 2018

Команда git lfs import сделает это автоматически.Он будет переписывать каждую ветку, чтобы удалить большие файлы:

git lfs migrate import --everything

Будет искать все большие файлы в истории и перепишет каждую ветку, чтобы установить подол как объекты LFS вместо хранения больших файлов непосредственно в Git.

Если вы хотите определить большие файлы для импорта:

git lfs migrate import --everything --include='*.dat'

Переносит все файлы, заканчивающиеся на .dat, независимо от размера.

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

...