2017-02-10 3 views
0

Что такое лучший способ очистки старых ветвей, поскольку я бегу из космоса на своем vm.git хозяйственная деятельность - удаление объединенных филиалов

Структура git развивается как основная ветвь, и функции создаются с помощью git-потока, периодически я переключаюсь на разработку и выполнение тянуть, а затем перестраиваю ветви функций против разработки.

Я довольно новичок в git, и я хочу очистить старые ветви, которые объединены, чтобы развиваться по мере того, как у меня заканчивается пространство, но я не хочу ничего делать с удаленным репозиторием, поскольку я не несу ответственности за это.

Мне просто нужно освободить место, может ли кто-нибудь сказать мне, как это сделать, не удаляя ветки из реального удаленного хранилища?

+0

Я смотрел на это, но он предложил толкая к зарождению, я не хочу, чтобы удалить что-либо из удаленного хранилища, является то, что то, что делает толчок? – berimbolo

+0

На самом деле это не дубликат, так как это, скорее всего, не решит проблему. – Vampire

+0

@berimbolo Вам не нужно нажимать удаленную ветку. Если вы этого не хотите, просто не делайте этого. – sigy

ответ

2

Хотя вы можете легко удалить объединенные ветки, это не поможет вам вообще. Ветвь - это всего лишь указатель на фиксацию, поэтому потребляет ровно 41 байт. (40 байт для символа sha плюс символ новой строки). Если ветка содержит ссылки на иначе оборванные коммиты, удаление ветви и выполнение некоторых сборок мусора может освободить место, но если коммиты объединены в другую ветку, они не свисают и останутся. Так что это не поможет. Если вы сделали много переустановок на ветке, в логе в ветке могут содержаться ссылки на другие оборванные коммиты, поэтому вы можете освободить некоторое пространство, оставив рефлог, а затем сделав сборку мусора. См. https://git-scm.com/docs/git-reflog и https://git-scm.com/docs/git-gc для получения дополнительной информации.

+0

Хорошо, поэтому, когда я удаляю ветви локально, а затем снова делаю git, я возвращаю те ветки обратно? Насколько мне известно, ветви не удаляются с удалённого устройства. – berimbolo

+0

Если вы удаляете удаленные ветви отслеживания локально и выполняете тяну, вы, конечно же, получите все ветви отслеживания, так как они находятся в удаленном репозитории. Если вы хотите изменить это, вам нужно изменить fcc refspec в config, чтобы вытаскивать только те ветки, которые вы указали. Если вы затем выполните 'git fetch -prune', удаляемые или удаленные ветви удаляются из вашего локального репозитория. Таким образом, вы можете, конечно, сэкономить некоторое пространство, если впоследствии вы выберете сборку мусора. – Vampire

+0

Вы также можете (в качестве альтернативы или дополнительно) сделать переупаковку, чтобы упаковать свободные файлы объектов в файлы пакетов. Это также может сэкономить большое количество места, поскольку для файлов пакетов требуется гораздо меньше места на диске. – Vampire

1

Попробуйте это:

# delete the branches that is merged with develop branch 
$ git chekcout develop 
$ git branch --merged | grep -v '*' | xargs git branch -d 

# delete the branches from local that is deleted in remote 
$ git remote prune origin 
+0

И это не удалит что-либо из реального удаленного репозитория? – berimbolo

+0

Нет, он будет очищать только ваш местный. –

+0

И не поможет в экономии места. – Vampire

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