Як видалити гілку локально?


159

У мене в сховищі є майстер і відділення розробників. Я хочу видалити головну гілку з мого комп'ютера, щоб я випадково не взяв на неї зобов'язання (це сталося ..).

Тут є питання про те, як видалити гілки локально та віддалено, але я не зміг дізнатися, як видалити гілку лише локально.

Одна відповідь сказала, щоб використовувати це:

git branch -d local_branch_name

Але я спробував це, і гілка все ще з’являється у додатку GitHub.


Який вихід з цієї команди? На якій галузі ви працюєте? Як це з’являється в консолі?
Слакс

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

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

@SLaks Отже, після локального видалення гілки, якщо я натискаю на неї в додатку GitHub для Windows, це просто переклонірувати її? Я хочу запобігти собі можливість вносити зміни в головну гілку безпосередньо.
Нейт

Відповіді:


114

Я думаю (виходячи з ваших коментарів), що я розумію, що ви хочете зробити: ви хочете, щоб ваша локальна копія сховища не мала ні звичайної локальної гілки master, ні віддаленої гілки відстеження origin/master, навіть якщо сховище, яке ви клонували - github one —Це місцева філія, 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 і з’явиться незалежно від програми Github Windows.

Якщо ви хочете видалити гілку повністю (також віддалено), використовуйте вищевказану команду в поєднанні з $ git push origin :[name_of_your_new_branch]. Попередження: ця команда видаляє всі існуючі гілки і може призвести до втрати коду. Будьте обережні, я не думаю, що це ви намагаєтеся зробити.

Однак щоразу, коли ви видаляєте зміни локальної гілки, віддалена гілка все одно з’явиться в додатку. Якщо ви не хочете продовжувати вносити зміни, просто проігноруйте їх і не натискайте, інакше ви можете клонувати сховище. Якщо у вас виникли запитання, будь ласка, повідомте мене про це.


1

вам потрібно перейти в іншу гілку і спробувати ту саму.

git гілка -d


1
Це має бути відповіддю? Або уточнююча чистка? Або просте запитання? Це так коротко, що я не можу сказати. Чи хотіли б ви детальніше?
Yunnosch

0

За вашими тегами я припускаю, що ви використовуєте Github. Чому б не створити деякі правила захисту гілки для вашого головного відділення? Таким чином, навіть якщо ви спробуєте підштовхнути майстер, він відкине це.

1) Перейдіть на вкладку "Налаштування" вашого репо в Github.

2) Клацніть на "Відділення" в лівій частині меню.

3) Натисніть "Додати правило"

4) Введіть 'master' для візерунка гілки.

5) Відмітьте "Потрібно перевірити запит на тягу перед об'єднанням"

Я також рекомендую зробити те саме для вашої гілки розробників.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.