проект Б по образу и подобию. В проекте А куча полезняшек, тащить всё это отдельно не хочется.
Я скопировал всю папку А и начал другой проект Б. Почерипикал коммиты, собрал амендом первый коммит на мастере. Стартовая точка есть. Вот только объекты внутри .git от репа А продолжают жить в репе Б.
Теперь вопрос — как аккуратно вычистить репу Б (.git) от объектов репы А? Или есть иной путь? Оба репа небольшие, относительно недавно начаты и объектов не сказать, чтобы много. Но и хранить их смысла нет.
сам и отвечу: git reflog expire --expire=now --all git repack -ad git prune в моём случае ссылки на незадействованные объекты были только из рефлога, ни тегов, ни веток (кроме мастера) не было, так что сначала чистим рефлог и потом уже чистим гарантированно недостижимый мусор с сжатием индекса, в итоге остаётся один коммит. Prune кажется просто молча завершился, ничего не сделав. Ещё потенциально полезны git fsck, git gc.
А что полезного в истории А, что вы утащили в Б? Вы ж фактически сделали форк, хех
Системные ништяки, которые до-/разбатывались довольно долго, но при этом разрознены и неоднородны (от полноценных готовых файлов классов до каких-то точечных мелочей) — тащить такое выборочно не просто лень, но местами банально нелегко. Я собрал всё нужное в кучу на основе существущих коммитов, пропуская лишний код и коммиты вокруг такового
Обсуждают сегодня