Как удалить ветку локально?


159

У меня есть мастер и ветка разработчика в моем хранилище. Я хочу удалить главную ветку со своего компьютера, чтобы случайно не зафиксировать ее (это случилось ..).

Здесь есть вопросы о том, как удалять ветки локально и удаленно, но я не смог выяснить, как удалить только ветку локально.

Один ответ сказал использовать это:

git branch -d local_branch_name

Но я попробовал это, и ветвь все еще обнаруживается в приложении GitHub.


Какой вывод у этой команды? На какой ты ветке? Как это выглядит в консоли?
Утром

@SLaks У меня был тип в моем вопросе. В консоли фактически говорится, что ветка была удалена, но в приложении GitHub (даже после ее перезапуска) ветка и коммит все еще видны. Выходные данныеDeleted branch master (was e8a8e29).
конец

GitHub для Windows также показывает удаленные ветви
SLaks

@SLaks Итак, после локального удаления ветки, если я нажму на нее в приложении GitHub для Windows, будет ли оно просто клонировано? Я хочу помешать себе внести изменения в основную ветку напрямую.
Nate

Ответы:


114

Я думаю (основываясь на ваших комментариях), что понимаю, что вы хотите сделать: вы хотите, чтобы ваша локальная копия хранилища не имела ни обычной локальной ветви master, ни ветви удаленного отслеживания origin/master, даже если хранилище, которое вы клонировали, - github - имеет локальную ветку, masterкоторую вы не хотите удалять из версии github.

Вы можете сделать это, удалив ветку удаленного отслеживания локально, но она будет просто возвращаться каждый раз, когда вы попросите ваш git синхронизировать ваш локальный репозиторий с удаленным репозиторием, потому что ваш git спрашивает их git «какие у вас есть ветви» и говорит «у меня есть master», так что ваш git (re) создает origin/masterдля вас, так что ваш репозиторий имеет то, что имеет их.

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

git branch -d -r origin/master

но опять же, он просто вернется на повторную синхронизацию. Это является возможным , чтобы победить это , а также ( с помощью remote.origin.fetchманипуляций), но вы , вероятно , лучше просто быть дисциплинированным достаточно , чтобы не создавать или изменять masterлокально.



99

Принудительно удалить локальное отделение:

$ git branch -D <branch_name>

[ ПРИМЕЧАНИЕ ]:

"-D" опция принудительного удаления.



6
Если я удаляю локальную ветвь с установленным восходящим потоком, а затем делаю обычную передачу, это не удалит удаленную ветку, верно?
Заправленный кофе


17

Насколько я понимаю исходную проблему, вы по ошибке добавили коммиты к локальному мастеру и еще не вносили эти изменения. Теперь вы хотите отменить свои изменения и надеетесь удалить свои локальные изменения и создать новую главную ветку из удаленной.

Вы можете просто сбросить свои изменения и перезагрузить мастер с удаленного сервера:

git reset --hard origin/master

13

Приложение Github для Windows показывает все удаленные ветви репозитория. Если вы удалили ветку локально с$ git branch -d [branch_name] , удаленная ветвь все еще существует в вашем хранилище Github и будет отображаться независимо от приложения Windows Github.

Если вы хотите полностью удалить ветку (также и удаленно), используйте вышеуказанную команду в сочетании с $ git push origin :[name_of_your_new_branch]. Предупреждение: эта команда стирает все существующие ветки и может привести к потере кода. Будьте осторожны, я не думаю, что это то, что вы пытаетесь сделать.

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


1

вам нужно переключиться на другую ветку и попробовать то же самое.

git branch -d


1
Это должен быть ответ? Или уточнение вопроса? Или простой вопрос? Это так коротко, я не могу сказать. Хотите уточнить?
Yunnosch

0

Судя по вашим тегам, я предполагаю, что вы используете Github. Почему бы не создать некоторые правила защиты веток для вашей основной ветки? Таким образом, даже если вы попытаетесь подтолкнуть к мастеру, он отклонит его.

1) Перейдите на вкладку «Настройки» своего репо на Github.

2) Нажмите «Ветви» в боковом меню слева.

3) Нажмите «Добавить правило»

4) Введите «мастер» для шаблона ветвления.

5) Снимите флажок «Требовать проверки запросов на извлечение перед объединением».

Я также рекомендовал бы сделать то же самое для вашей ветки разработчика.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.