2012-09-26 2 views
34

Я довольно новичок в использовании git, и я использую его, чтобы внести свой вклад в AOKP Android ROM. Я успешно создал несколько ветвей, изменил код и загрузил коммиты, которые были объединены на удаленном конце. Но в моем локальном хранилище эти ветви все еще появляются (хотя они и не имеют никаких изменений). Проблема в том, что когда я создал эти ветви, я сделал это прямо из подпапки, которую нужно было изменить, поэтому у меня нет никаких «более высоких» ветвей. И из-за этого я не могу удалить эти ветви - git tels me error: Cannot delete the branch 'MyMods' which you are currently on.Как удалить (или объединить) локальную ветку Git, в которой я сейчас включен?

Так что я могу сделать, чтобы избавиться от этих ветвей?

+0

Git не позволяет это, потому что это немного умнее этого народа: https: // WWW. youtube.com/watch?v=zE8el_qscvE – Krumia

ответ

50

Checkout другая ветвь первых, перед удалением:

git checkout master 
git branch -d MyMods 

Кроме того, филиалы не имеют ничего общего с папками. Git всегда отслеживает весь репозиторий сразу со всеми его папками и файлами. Разветвление - это не что иное, как указатель на одно коммит или моментальный снимок в истории репозитория.

+0

Я понимаю разницу между тем, что делает git и физическими папками. Мне просто не нравится видеть предупреждение каждый раз, когда я запускаю «репо-синхронизацию», что моя ветка - это количество задержек, и, поскольку я закончил с этим, я хочу избавиться от нее. Но если я проверю мастер-ветку, не буду ли я сталкиваться с теми же проблемами, потому что тогда мастер-ветвь будет просто висит там без коммитов? – user496854

+0

Я обратился к этому иригинальному учебнику: http: //rootzwiki.com/topic/22424-aokp-gerrit-tutorial, и мне просто нужно было создать ветку прямо в приложении, которое я модерировал. Итак, вы имеете в виду, что мне нужно проверить все дерево AOKP и как это повлияет на мою обычную синхронизацию репо? – user496854

+0

'git checkout master' (или любая другая ветка) не дает никакого ответа, команда, кажется, берет навсегда. Я думаю, что одна ветка как-то сломана, поэтому я хочу ее удалить. –

3

Да только проверка другой ветви (может быть, мастер), а затем:

мастер мерзавец оформления заказа мерзавец филиал -d thebran

0

Но в моем локальном хранилище, те отрасли, по-прежнему появляются (даже хотя они обнаруживают, что не имеют никаких изменений).

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

Ответы выше говорят вам, как удалить ветку. Однако я бы добавил, что использование опции -D немного более мощное. Эта опция удаляет ветвь независимо от ее (un) состояния объединения:

git branch -D branchName 

Это атомная бомбу с удалением ветви. Используйте с осторожностью.

+0

В исходном посте указано, что он не позволит мне удалить ветку, потому что я сейчас на ней, и нет более высоких ветвей для перемещения. Итак, как ваш ответ помогает? – user496854

+0

Вам нужно будет сначала переключить ветви - забыл добавить это. И мой комментарий также указывает на другой ответ, в котором говорится, что вы можете удалить только ветку, в которой вы не находитесь. – gitlinggun

+0

Что вы подразумеваете под «высшими ветвями»?Это ничего не значит в мире git. – gitlinggun

1

Если ветвь вы не можете удалить это worktree то вам, возможно, потребуется удалить этот worktree первый:

rm -r MyMods 
git worktree list # shows MyMods 
git worktree prune 
git worktree list # doesn't show MyMods 
git branch -d MyMods 
Смежные вопросы