Git·19 питань

Як видалити гілку локально і в remote-репозиторії?

Відповідь

Видалення гілок — рутинне завдання після завершення роботи. Гілки потрібно видаляти і локально, і в remote, щоб репозиторій не засмічувався.

Локальне видалення: git branch -d <name> видаляє гілку, але лише якщо вона об'єднана з поточною (merged). Git перевірить, що всі коміти гілки є в поточній — якщо ні, видасть помилку. Це захист від втрати роботи. Команда git branch -D <name> видаляє примусово, навіть якщо є нез'єднані коміти. Використовуйте -D лише якщо впевнені, що зміни не потрібні — після видалення відновити гілку можна лише через reflog.

Видалення в remote: git push origin --delete <name> видаляє гілку на сервері (GitHub, GitLab). Скорочена форма: git push origin :<name>. Після видалення remote-гілки інші розробники побачать її як "gone" при наступному git fetch.

Видалення tracking-гілок: після видалення remote-гілки локальна tracking-копія (origin/<name>) залишається. Очистіть її: git fetch --prune або git remote prune origin. Це видаляє локальні посилання на неіснуючі remote-гілки.

Масова очистка: git branch --merged main показує гілки, об'єднані з main — їх можна безпечно видаляти. Команда для видалення всіх merged-гілок окрім main: git branch --merged main | grep -v "main" | xargs git branch -d. Будьте обережні — переконайтеся, що не видалите гілку, на якій працюєте.

Відновлення видаленої гілки: git reflog покаже хеш останнього коміту видаленої гілки. Виконайте git branch <name> <hash> — гілка відновиться. Reflog зберігає історію 90 днів, тому відновлення можливе протягом цього терміну.

Гарна практика: видаляйте feature-гілки одразу після merge в main. Це keeps гілок чистим і полегшує навігацію. На GitHub можна налаштувати автоматичне видалення гілок після merge: Settings → Options → Automatically delete head branches.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем