LINUX.ORG.RU

Удалить историю гита до определённого коммита на удалённом репозитории имея лишь git pull origin на нём

 ,


0

2

Всё написанное ниже ещё не проводилось, а лишь только находится в стадии размышлений и тестов.

Есть репозиторий на гитхабе, есть локальный репозиторий и есть репозиторий на сервере с 7 дебианом(не особо важно, ну да ладно). Репозиторий на гитхабе имеет один стартовый коммит с ридми в мастере и ещё несколько веток с разными билдами по 150-300мб, везде разное. На сервере склонирован лишь мастер, на локалке все ветки. Далее на локали в мастер пулится одна из веток. Она коммитится и запушивается на гитхаб, а потом и на сервер. На сервере она компилится, скомпиленое немного работает, потом останавливается. Далее на локали всё ревертается/резетается/ещёчегонить до изначального состояния, пушится на гитхаб и на сервер. Скомпиленное находится в гитигноре, так что оно не важно. После этого всё вышеописанное проделывается с другой веткой. Ветки разные, а некоторые даже совершенно разные. Всё работает, но есть одна проблема - папочка на сервере жирнеет. Пускай это происходит медленно, но всё же уверенно.

Вопрос: как с этим бороться? Как удалить из мастера всё, что было сделано аж до самого первого коммита? реверт+резет--хард лишь делает вид, что всё откатилось. Или как провернуть подобное без таких манёвров? Нужно именно делать через репу, ибо все действия по заливанию обнов на сервер происходят через кнопочки на сайте, прямого доступа к хосту нет, а дёргать каждый раз админа с доступом не очень хочется.



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

reset --hard && push --force, но обычно когда ты видишь эти команды, знай, что ты делаешь что-то неправильно.

git gc потом для подчистки хвостов.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

Я же уже писал про резет--хард, оно лишь делает вид. Объём не изменяется, по крайней мере на локали. Да, сборщик может и сможет подчистить хвосты, но только на локали, а мне не важно сколько оно занимает у меня. Ибо, как выше писал, жирнеет папка на хосте, а к нему доступа нет, только через гуи с кнопкой пулл на сайте хоста или через админа, которого лучше не трогать. Окей, я это тестил лишь на локали, на хосте пока ничего нет, ибо от админа нужно ещё добиться разрешения на такое, значит reset --hard && push --force на локали + пулл этого пуша на хосте не будет заставлять папку жирнеть?

AndyAdjutor
() автор топика
Ответ на: комментарий от post-factum

Тогда вообще забудь то, что я тебе говорил.

Всё не настолько страшно. Просто админ поставил 2 условия - чтобы папка не жирнела и чтобы его не трогали. Или таки никак нельзя удалить историю изменений в гите без удаления её отдельно на удалённом репозтории через сборщик мусора?

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

Насколько я знаю, при некоторых операциях с гитом, сборщик мусора должен запускаться автоматически. Но когда именно это происходит - я не знаю (надо гуглить и читать документацию). То есть идея в том, что запускать на удалённом сервере git gc руками не обязательно - рано или поздно это произойдёт автоматически.

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

Ладно, это и буду использовать как аргументацию. Всем спасибо за ответы.

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

рано или поздно это произойдёт автоматически

У git'а есть одна придурь: в какой-то момент он может отказаться запускать gc автоматически, пока не запустишь руками git prune. Судя по всему, такое происходит, если часто создавать-удалять ветки, активно ребейзить и тому подобное. То есть, скорее всего только локально. Но нельзя исключать ситуации, что такое может произойти и в удалённом репозитории. Само оно не починится, репозиторий дальше будет пухнуть.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

сообщить об обнаруженной проблеме в багтрекер

Git сам об этом пишет каждый раз, так что это известное поведение. И оно, похоже, намеренное. Скорее всего, это как-то можно настраивать, но мне всегда лень искать это в доках. Запустил git prune, удалил .git/gc.log, и дальше ботать.

i-rinat ★★★★★
()
Ответ на: комментарий от AndyAdjutor

Просто админ поставил 2 условия - чтобы папка не жирнела и чтобы его не трогали.

1. Прочитать https://git-scm.com/book/en/v2

2. Послать админа на ...

3. Поднять свой сервер (или попросить полноценный пользовательский аккаунт с ssh доступом на существующем сервере) и работать с git на сервере через ssh (скорее всего потребуется время, чтобы разобраться, как с ним работать, работаешь с git не ты один).

По ходу разбирательства или поддержки собственного сервера поймешь, в каком месте ты от админа много просишь, а в каком месте он просто ленивый тупой баран (в смысле какие запросы оправданы, а какие нет). В результате ты прокачаешь как навыки сисадминства (очень поверхностно, но достаточно для поддержки git репозитория), так и разработчика.

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

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