LINUX.ORG.RU

GIT - как удалить всю историю, и оставить только последнее состояние проекта?

 


3

1

Хочу сделать не совсем обычную вещь.

Мне нужно удалить всю историю правок, и оставить только последнее актуальное состояние проекта. Ветка одна, master. Как это можно сделать?

Сие удаление нужно сделать как в локальном репозитарии, так и на удаленном (основном, серверном) репозитарии.

Готовые команды приветствуются.

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

Ветка одна, master.

ССЗБ

q11q11 ★★★★★
()

Если ты коммитер и в проекте есть другие люди, то тебя поймают и отпиздят. Это как пить дать

shamaz
()
Ответ на: комментарий от shamaz

Я единственный разработчик, других людей нет, да это по большей части не проект, а хранилище данных с историей. Нужно отдать на сторону без истории, ибо данных там на 50Mb, а история 1,5Gb.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Щас скажу что-то в своём роде: так надо было использовать HAMMER! Хотя не, на 50 Мб - это оверкилл.

А ещё можно zfs со своими снэпшотами, но это не то.

Ещё ты можешь попытаться сделать хотя бы git gc

shamaz
()
Ответ на: комментарий от Xintrea

Нужно отдать на сторону без истории, ибо данных там на 50Mb, а история 1,5Gb.

Для этого есть: git clone --depth=1 <repo-path>

И не нужно убивать историю.

Norgat ★★★★★
()
Последнее исправление: Norgat (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Нужно отдать на сторону без истории

Так непонятно, а зачем тогда вообще git? Как было сказано, грохнуть .git и всё.

KRoN73 ★★★★★
()
Ответ на: комментарий от dmitry_malikov

server> git gc

Вот не понял, как эту команду выполнить на клиенте, чтобы она выполнилась на сервере ?

You've successfully authenticated, but server does not provide shell access.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

rebase в локальном репозитории, а потом принудительный push -f

Разве rebase удаляет всю историю??

Xintrea ★★★★★
() автор топика

Создай новый реаозиторий, добавь туда то, что нужно, и запушай это на сервер с флагом -f. Это эквивалентно удалению истории.

s9gf4ult ★★
()
Ответ на: комментарий от Xintrea

Как эта команда удалит историю на сервере?

Никак. Тебе сервер надо передать или что?

nanoolinux ★★★★
()
Ответ на: комментарий от Xintrea

Не очень понятно, зачем, отдавая на сторону, уничтожать историю. git archive отдаст просто без .git'а :)

Но если старую историю всё-таки хочется уничтожить, породив новую, лучшую, то совет dmitry_malikov выглядит адекватным. Я бы добавил ещё --aggressive к git gc. Ну, чтобы наверняка ;)

А что касается удалённого сервера, совет тот же, что и раньше: вначале сформируйте новую историю, потом с --force запихайте её на сервер. Ну или как у вас она запихивается, зависит от настроек сервера.

AlexM ★★★★★
()
Последнее исправление: AlexM (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Разве rebase удаляет всю историю?

С помощью rebase можно объединить предыдущие коммиты (в т.ч. все предыдущие коммиты) в один, который и будет последним.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от Xintrea

Нужно отдать на сторону без истории

Отдай на сторону тарбол. Это так трудно?

kernelpanic ★★★★★
()

git checkout --orphan

Остальное в мане.

Dendy ★★★★★
()
Ответ на: комментарий от AlexM

В общем, оказалось проще всего удалить на сервере репозитарий и создать новый с таким же именем.

Локально тоже был удален репозитарий, и создан новый с текущим состоянием.

Потом этот новый локальный был залит на новый серверный.

Тупо, зато железобетонно.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Если че, потом добавляешь remote на тот же реп

Что вы имеете в виду под этой фразой?

Что значит «добавить remote на тот же реп»?

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.