Как удалить ветку в GIT (локальную или удалённую)

Как удалить ветку в GIT (локальную или удалённую)

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

Удаление локальной ветки GIT

Чтобы удалить локальную ветку GIT, вы можете выполнить одну из следующих команд:

git branch -d branch_name
git branch -D branch_name

Как вы можете заметить, эти команды, в разных вариациях использования, имеют 2 разных аргумента, d и D.

Параметр -d означает --delete, который удалит локальную ветвь, только в случае, если вы смерджили её с какой-то из веток.

Опция -D обозначает --delete --force, которая удаляет ветку независимо от ее статуса push или merge, так что будьте осторожны при её использовании!

Удаление удалённой ветки GIT

Для того, чтобы удалить ветку, уже опубликованную в удалённом репозитории (например, в Bitbucket, GitHub, GitLab), вы можете использовать следующую команду:

git push <remote_repository_name> --delete <branch_name>

Или же, есть ещё одна опция, которую, возможно, будет немного сложнее запомнить:

git push <remote_repository_name> :<branch_name>

Эти основные параметры также могут быть использованы, если вы хотите удалить "тег".

В большинстве случае использования, в качестве remote_branch_name используется origin.
К примеру, код будет выглядеть так: git push origin --delete tests


В некоторых случаях бывает, что при попытке выполнить запрос на удаление ветки, получаем ошибку fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository.
Это значит, что мы вводим неправильное имя удалённой ветки.

Это имя задаётся при добавлении удалённого репозитория к себе в проект. К примеру, выполняя эту команду на добавления удалённого репозитория он будет сохранён под именем origin:

git remote add origin https://github.com/truehero/test.git

Но этот же репозиторий мы можем сохранить под любым другим именем, к примеру, выполнив команду:

git remote add test_project https://github.com/truehero/test.git

Уже сможем обращаться к этому репозиторию по имени test_project.

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

Если вы получили такую ошибку, но не помните, какое имя вы присваивали этому репозиторию, выполните команду: git remote, которая покажет список актуальных удалённых репозиториев и их имена.

Или же, если вы используете PHPStorm для работы, можете зайти во вкладку меню VCS > Git > Remotes, где сможете увидеть список всех удалённых репозиториев:remote
И тут вы и можете подсмотреть имя, которое нужно для обращений к репозиторию. К примеру, как показано у меня на скрине, у меня один репозиторий, который имеет имя tests, потому для удаления ветки в этом репозитории нужно выполнить команду

git push tests --delete useless-branch

Добавить коммиты на удаленную ветку и сразу удалить ветку локально

Если вам когда-нибудь станет необходимость перенести свою локальную ветку в удалённый репозиторий, после чего, удалить локальную, вы можете использовать команду git push с опцией -d в качестве псевдонима для --delete.

Если вы регулярно пользуетесь GIT-ом, то я рекомендую купить себе книгу Pro Git и поставить её себе на стол, как библию по ГИТ-у.

Резюме

В этой статье я рассказал и привёл примеры, как удалить ветку в репозитории гит. Как оказалось, удаление локальной ветки и удалённой в GIT немного отличается. Потому, я подробно остановится на этом, и показал на реальном примере, как удалить ветку в github, gitlab, или bitbucket, а так же, показал, как избежать некоторых ошибок при работе с удалённым репозиторием. Я вас категорически поздравляю, потому что теперь вы умеете удалять ветки на git не только локально, но и на удалённом сервере.

При удалении ветки все данные с неё стираются, будьте особо внимательны при удалении данных с ГИТ-а.