2010-12-07 2 views
3

У меня есть большое старое git-репо с большим количеством двоичных файлов, размещенных на локальном сервере Redmine. Я хотел бы скворовать все комментарии до определенной даты (6 или 12 месяцев назад) вместе, чтобы сохранить некоторые данные о размере моего репо.История сквоша git

Есть ли способ сделать это?

ответ

3

Каждый раз, когда вы меняете историю, все транзакции после изменения будут иметь новые суммы SHA1. Если вы используете репо или группу людей, с которой вы можете легко общаться, тогда вы можете безопасно сквоивать или фильтровать (см. Ниже), чтобы очистить историю, а затем, когда они извлекут, они должны будут вручную сбросить все их ветви головы к новым головам. Если это не ситуация, то вам просто нужно будет с ней жить, к сожалению. После публикации истории его нельзя изменять.

Теперь вы можете удалить фиксации, используя git rebase. Это медленно и болезненно, но это может сработать. Вы также можете использовать git filter-branch для удаления всех двоичных файлов. Я должен был сделать это на репо сам, и это довольно легко. Если все ваши двоичные файлы находятся в одном каталоге, то вы можете использовать флаг -subdirectory ветки git filter-branch (конечно, прочитайте справочную страницу), чтобы удалить все из этого подкаталога во всех коммитах в заданном диапазоне по истории , Если они разбросаны, вы можете дать git filter-branch командной строке оболочки или сценарий оболочки для выполнения при каждой фиксации, и этот скрипт может пройти и избавиться от двоичных файлов и всего, что вы хотите удалить или изменить , Опять же, см. Страницу справки. Но я думаю, что git filter-branch - определенно способ пойти в такой ситуации.

Смежные вопросы