Как удалить ветку со всеми коммитами, помещенными в неправильный репозиторий? - PullRequest
6 голосов
/ 01 марта 2011

У нас есть несколько репозиториев git, работающих над проектами Android.У нас есть «загрузочное» репо, которое маленькое, и «андроид», которое огромно.Во время разработки один из наших ребят переместил ветку с 'android' на 'boot', и теперь размер загрузочного репозитория составляет 700 МБ!Есть ли способ полностью удалить неправильную ветку и все связанные с ней коммиты из 'boot' сейчас?

Я пробовал filter-branch и другие методы, но большинство из них изменяют номера коммитов, сделанные после этого неправильного нажатия

Теоретически это не должно быть проблемой, удаляют коммиты, которые находятся на стороне».Эта ветка никогда не объединялась с 'master', и эти коммиты не являются родителями для каких-либо полезных коммитов

Ответы [ 2 ]

12 голосов
/ 01 марта 2011

Удаление ветки с удаленного сервера выполняется с помощью git push

git push --delete boot branchname

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

git remote prune boot

Однако после удаления ветки данные будут по-прежнему задерживаться в каждом хранилище на 2-4 недели по умолчанию в качестве меры предотвращения случайной потери данных. Если проблема с дисковым пространством действительно так важна для вас, то ее можно удалить раньше, но учтите, что это удалит все недоступные объекты, которые временно хранятся, чтобы предотвратить случайную потерю данных.

git gc --aggressive --prune=now
5 голосов
/ 01 марта 2011

Удаление ветки делается с помощью

git branch -D branch_name

Обратите внимание на заглавную -D опцию: она говорит git удалить ветку, даже если она не полностью объединена с master.

После этого запустите сборщик мусора с помощью git gc. Тогда с тобой все будет в порядке.

...