Удаление ветки git: Как удалить ветку в 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, где сможете увидеть список всех удалённых репозиториев:
И тут вы и можете подсмотреть имя, которое нужно для обращений к репозиторию. К примеру, как показано у меня на скрине, у меня один репозиторий, который имеет имя tests, потому для удаления ветки в этом репозитории нужно выполнить команду

git push tests --delete useless-branch

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

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

с опцией -d в качестве псевдонима для —delete.

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

Резюме

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

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

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

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

В этой статье рассказывается, как удалять локальные и удаленные ветви Git.

Удалить локальную ветку Git

Чтобы удалить локальную ветку Git, используйте команду git branch с флагом -d--delete):

git branch -d branch_name
Deleted branch branch_name (was 17d9aa0).

 

Если вы попытаетесь удалить ветку, которая содержит изменения, которые еще не объединены, вы получите следующую ошибку:

error: The branch 'branch_name' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch_name'.

 

Как сказано в сообщении выше, вы можете принудительно удалить флаг -D, используя ярлык для --delete --force:

git branch -D branch_name

 

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

git branch –no-merged.

 

Если вы вернетесь в ветку, которую удалили, вы получите следующее сообщение:

error: Cannot delete branch 'branch_name' checked out at '/path/to/repository'

 

Вы не можете удалить активную ветку. Сначала переключитесь на другую ветку, а затем удалите branch_name:

git checkout mastergit branch -d branch_name

Удалить удаленную ветку Git

В Git локальные и удаленные ветви являются отдельными объектами. Удаление локальной ветки не удаляет удаленную ветку.

Чтобы удалить удаленную ветку, используйте команду git push с флагом -d--delete):

git push remote_name --delete branch_name

 

Где remote_name обычно находится origin:

git push origin --delete branch_name
...
 - [deleted]         branch_name

 

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

git push origin remote_name :branch_name

 

Если вы работаете над проектом с группой людей и попытаетесь удалить удаленную ветку, которая уже была удалена кем-то другим, вы получите следующее сообщение об ошибке:

error: unable to push to unqualified destination: branch_name The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to '[email protected]:/my_repo'

 

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

git fetch -p

 

Флаг -p сообщит Git удалить все ссылки на удаленное отслеживание, которые больше не существуют в удаленном хранилище, перед извлечением.

 

Заключение

Из этого урока вы узнали, как удалять локальные и удаленные ветви Git. Ветви – это, по сути, ссылка на снимок ваших изменений и короткий жизненный цикл. Как только ветвь объединена с главной (или другой основной ветвью), она больше не нужна и должна быть удалена.

Если вы столкнулись с проблемой или у вас есть отзыв, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter

.

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

Если вам нужны более подробные объяснения следующих команд, см. Длинные ответы в следующем разделе.

удаление удаленной ветви:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

удаление локальной ветви:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

удаление локальной ветви удаленного отслеживания:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

когда вы имеете дело с удалением ветки как локально, так и дистанционно, имейте в виду, что есть 3 различных ветвей, участвующих:

  1. местное отделение X.
  2. ветвь удаленного происхождения X.
  3. местное отделение удаленного отслеживания origin/X это отслеживает удаленную ветку X.

оригинальный плакат используется

git branch -rd origin/bugfix

который только удалил его местное отделение дистанционного отслеживания origin/bugfix, а не фактическая удаленная ветвь bugfix on origin.

чтобы удалить эту фактическую удаленную ветку необходимо

git push origin --delete bugfix

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

нажатие для удаления удаленных ветвей также удаляет удаленные ветви отслеживания

обратите внимание, что удаление удаленной ветви X из командной строки с помощью git push также удалит локальную ветку удаленного отслеживания origin/X, поэтому нет необходимости обрезать устаревшую ветку удаленного отслеживания с git fetch --prune или git fetch -p, хотя это не повредит, если вы все равно это сделаете.

вы можете проверить, что ветка удаленного отслеживания origin/X также был удален, выполнив следующее:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

обрезка устаревшей локальной ветви удаленного отслеживания origin / X

если вы не удалили удаленную ветку X из командной строки (как указано выше), тогда ваше локальное репо по-прежнему будет содержать (теперь устаревшую) ветку удаленного отслеживания origin/X. Это может произойти, если вы удалили удаленную ветку непосредственно через веб-интерфейс GitHub, например.

типичный способ удалить эти устаревшие ветви удаленного отслеживания (начиная с Git версии 1.6.6) — просто запустить git fetch С --prune или меньше -p. Примечание. что это удаляет все устаревшие локальные ветви удаленного отслеживания для любых удаленных ветвей, которые больше не существуют на удаленном:

git fetch origin --prune
git fetch origin -p # Shorter

вот соответствующая цитата из 1.6.6 выпуске (выделено мной):

» git fetch » узнал

--all и --multiple options, чтобы запустить выборку из много хранилищ, и --prune возможность удаления удаленного отслеживания ветви, которые стали черствыми. это делает «удаленное обновление git» и » git remote prune «менее необходим (нет плана по удалению» remote обновление » или «удаленная чернослив», хотя).

альтернатива выше автоматическая обрезка устаревших удаленные ветки

альтернативно, вместо обрезки устаревших локальных ветвей удаленного отслеживания через git fetch -p, вы можете избежать лишней работы в сети просто вручную удалив ветку (ы) с помощью --remote или -r флаги:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

См. Также

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa