Инструкция git для удаления ветки night

Управление ветками

Теперь, когда вы уже попробовали создавать, объединять и удалять ветки, пора познакомиться с некоторыми инструментами для управления ветками, которые вам пригодятся, когда вы начнёте использовать ветки постоянно.

Команда git branch делает несколько больше, чем просто создаёт и удаляет ветки.
При запуске без параметров, вы получите простой список имеющихся у вас веток:

$ git branch
  iss53
* master
  testing

Обратите внимание на символ *, стоящий перед веткой master: он указывает на ветку, на которой вы находитесь в настоящий момент (т. е. ветку, на которую указывает HEAD).
Это означает, что если вы сейчас сделаете коммит, ветка master переместится вперёд в соответствии с вашими последними изменениями.
Чтобы посмотреть последний коммит на каждой из веток, выполните команду git branch -v:

$ git branch -v
  iss53   93b412c Fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 Add scott to the author list in the readme

Опции --merged и --no-merged могут отфильтровать этот список для вывода только тех веток, которые слиты или ещё не слиты в текущую ветку.
Чтобы посмотреть те ветки, которые вы уже слили с текущей, можете выполнить команду git branch --merged:

$ git branch --merged
  iss53
* master

Ветка iss53 присутствует в этом списке потому что вы ранее слили её в master.
Те ветки из этого списка, перед которыми нет символа *, можно смело удалять командой git branch -d; наработки из этих веток уже включены в другую ветку, так что ничего не потеряется.

Чтобы увидеть все ветки, содержащие наработки, которые вы пока ещё не слили в текущую ветку, выполните команду git branch --no-merged:

$ git branch --no-merged
  testing

Вы увидите оставшуюся ветку.
Так как она содержит ещё не слитые наработки, попытка удалить её командой git branch -d приведёт к ошибке:

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

Если вы действительно хотите удалить ветку вместе со всеми наработками, используйте опцию -D, как указано в подсказке.

Подсказка

Если в качестве аргумента не указан коммит или ветка, то опции --merged и --no-merged покажут что уже слито или не слито с вашей текущей веткой соответственно.

Вы всегда можете указать дополнительный аргумент для вывода той же информации, но относительно указанной ветки предварительно не извлекая и не переходя на неё.

$ git checkout testing
$ git branch --no-merged master
  topicA
  featureB

Переименование ветки

Внимание

Не переименовывайте ветки, которые всё ещё используются другими участниками.
Не переименовывайте ветку в master/main/mainline, не прочитав раздел «Изменение имени главной ветки».

Предположим, у вас есть ветка с именем bad-branch-name, и вы хотите изменить её на corrected-branch-name, сохранив при этом всю историю.
Вместе с этим, вы также хотите изменить имя ветки на удалённом сервере (GitHub, GitLab или другой сервер).
Как это сделать?

Переименуйте ветку локально с помощью команды git branch --move:

$ git branch --move bad-branch-name corrected-branch-name

Ветка bad-branch-name будет переименована в corrected-branch-name, но это изменение пока только локальное.
Чтобы все остальные увидели исправленную ветку в удалённом репозитории, отправьте её туда:

$ git push --set-upstream origin corrected-branch-name

Теперь проверим, где мы сейчас находимся:

$ git branch --all
* corrected-branch-name
  main
  remotes/origin/bad-branch-name
  remotes/origin/corrected-branch-name
  remotes/origin/main

Обратите внимание, что текущая ветка corrected-branch-name, которая также присутствует и на удалённом сервере.
Однако, старая ветка всё ещё по-прежнему там, но её можно удалить с помощью команды:

$ git push origin --delete bad-branch-name

Теперь старое имя ветки полностью заменено исправленным.

Изменение имени главной ветки

Предупреждение

Изменение имени ветки, например master/main/mainline/default, сломает интеграции, службы, вспомогательные утилиты и скрипты сборки, которые использует ваш репозиторий.
Прежде чем сделать это, обязательно проконсультируйтесь с коллегами.
Также убедитесь, что вы выполнили тщательный поиск в своём репозитории и обновили все ссылки на старое имя ветки в вашем коде или скриптах.

Переименуйте локальную ветку master в main с помощью следующей команды:

$ git branch --move master main

После этого, локальной ветки master больше не существует, потому что она была переименована в ветку main.

Чтобы все остальные могли видеть новую ветку main, вам нужно отправить её в общий репозиторий.
Это делает переименованную ветку доступной в удалённом репозитории.

$ git push --set-upstream origin main

В итоге, состояние репозитория становится следующим:

$ git branch --all
* main
  remotes/origin/HEAD -> origin/master
  remotes/origin/main
  remotes/origin/master

Ваша локальная ветка master исчезла, так как она заменена веткой main.
Ветка main доступна в удалённом репозитории.
Старая ветка master всё ещё присутствует в удалённом репозитории.
Остальные участники будут продолжать использовать ветку master в качестве основы для своей работы, пока вы не совершите ряд дополнительных действий.

Теперь, для завершения перехода на новую ветку перед вами стоят следующие задачи:

  • Все проекты, которые зависят от текущего, должны будут обновить свой код и/или конфигурацию.

  • Обновите конфигурацию всех запускаемых тестов.

  • Исправьте скрипты сборки и публикации артефактов.

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

  • Обновите документацию, исправив ссылки, указывающие на старую ветку.

  • Слейте или отмените запросы на слияние изменений, нацеленные на старую ветку.

После того, как вы выполнили все эти задачи и уверены, что ветка main работает так же, как ветка master, вы можете удалить ветку master:

$ git push origin --delete master

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

Чтобы удалить локальную ветку в Git нужно выполнить команду (вместо mybranch необходимо поставить название ветки, которую вы хотите удалить):

git branch -d mybranch

Обратите внимание на то, что ветка, которую вы удаляете, не должна быть вашей текущей веткой, в которой вы работаете, иначе отобразится ошибка вида:
error: Cannot delete branch ’mybranch’ checked out at ’/path/to
Поэтому, если вам нужно удалить текущую ветку, то сначала нужно переключиться на какую-либо другую ветку, а только потом выполнять удаление.

Если вдруг возникает ошибка: The branch ’mybranch’ is not fully merged. If you are sure you want to delete it и вы по прежнему хотите удалить ветку, то для принудительного удаления ветки можно воспользоваться опцией -D:

git branch -D mybranch

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

Чтобы удалить удаленную (remote) ветку используется команда (вместо origin и mybranch необходимо поставить свои данные):

git push origin --delete mybranch

Вместо —delete можно просто писать -d:

git push origin -d mybranch

Смотрите также:

  • Как изменить файлы в старом коммите (не последнем)
  • Как добавить все файлы в коммит, кроме одного
  • Как создать ветку из предыдущего коммита
  • Команда Git stash. Как прятать изменения в Git
  • Как показать файлы, которые будут добавлены в текущий коммит
  • Как переименовать ветку
  • Как показать текущую ветку
  • Как создать новую ветку

It is common for a git repo to have different branches. They are a good way to work on different features and fixes while isolating the new code from the main codebase. Repos often have a master branch or a main branch for the main codebase and developers create other branches with names of their choice (or as required by the organization) to work on different features or fixes.  Most of the time you might have to delete a git branch, because of some irreversible changes, security issues, or when a particular feature of the related project has been built. In most cases, it is simple to delete a git branch. In this article, I’ll guide you through the entire process of how to delete a git branch securely. To get started I have already created a new branch in my repo using:

git checkout -b <branch-name> 

Here <branch-name> is test. To check which is the current working branch you can use the git branch command.

we can see that we are in the test branch

and the following is a snapshot of my Github repository with the test branch in the remote.

Delete a Branch Locally 

Git won’t allow you to delete the branch you are currently working on. So you must make sure to checkout to a branch that you are NOT deleting. For this use the command:

git checkout <branch-name>

Here we will check out our main branch from my test branch.

Now in order to delete the test branch locally, we use the command :

git branch -d <branch-name>

We will delete my test branch as an example.

Note: The -d option will delete the branch only if it has already been pushed and merged with the remote branch. If you want to forcefully delete a branch you will have to use the -D option instead. The -D flag is synonymous with –delete –force. This will forcefully delete the branch even if it hasn’t been pushed or merged with the remote. the full command is:

git branch -D <branch-name>

With this, we can successfully delete a local branch.

Delete a Branch Remotely

You can’t use the git branch command to delete a remote branch. Instead, you have to use the git push command with the –delete flag, followed by the name of the branch that we want to delete. You also need to specify the remote name (origin in this case) after “git push”. The command is as follows:

git push <remote-name> --delete <branch-name>

Here I will delete my test branch in my remote repository as shown below.

This command will delete the branch remotely. You can also use the shorthand:

git push <remote-name> :<branch-name>

As you can see my remote branch is no more in my GitHub repo:

With this, we have successfully deleted our remote branch. A common error faced by many in this step is:

error: unable to push to unqualified destination: remoteBranchName 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 ‘git@repository_name’

This means that someone has already deleted the branch that you want to delete. If this happens you can use the following command to synchronize your branch list in the local environment:

git fetch -p

The -p flag here means “prune”. After fetching the branches which no longer exist in remote will be deleted in your local working environment. 

Last Updated :
23 Jun, 2021

Like Article

Save Article

The short answers

If you want more detailed explanations of the following commands, then see the long answers in the next section.

Deleting a remote branch

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

Deleting a local branch

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

Deleting a local remote-tracking branch

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

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

The long answer: there are three different branches to delete!

When you’re dealing with deleting branches both locally and remotely, keep in mind that there are three different branches involved:

  1. The local branch X.
  2. The remote origin branch X.
  3. The local remote-tracking branch origin/X that tracks the remote branch X.

Visualization of three branches

The original poster used:

git branch -rd origin/bugfix

Which only deleted his local remote-tracking branch origin/bugfix, and not the actual remote branch bugfix on origin.

Diagram 2

To delete that actual remote branch, you need

git push origin --delete bugfix

Diagram 3

Additional details

The following sections describe additional details to consider when deleting your remote and remote-tracking branches.

Pushing to delete remote branches also removes remote-tracking branches

Note that deleting the remote branch X from the command line using a git push will also remove the local remote-tracking branch origin/X, so it is not necessary to prune the obsolete remote-tracking branch with git fetch --prune or git fetch -p. However, it wouldn’t hurt if you did it anyway.

You can verify that the remote-tracking branch origin/X was also deleted by running the following:

# 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

Pruning the obsolete local remote-tracking branch origin/X

If you didn’t delete your remote branch X from the command line (like above), then your local repository will still contain (a now obsolete) remote-tracking branch origin/X. This can happen if you deleted a remote branch directly through GitHub’s web interface, for example.

A typical way to remove these obsolete remote-tracking branches (since Git version 1.6.6) is to simply run git fetch with the --prune or shorter -p. Note that this removes all obsolete local remote-tracking branches for any remote branches that no longer exist on the remote:

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

Here is the relevant quote from the 1.6.6 release notes (emphasis mine):

«git fetch» learned --all and --multiple options, to run fetch from
many repositories, and --prune option to remove remote tracking
branches that went stale.
These make «git remote update» and «git
remote prune» less necessary (there is no plan to remove «remote
update» nor «remote prune», though).

Alternative to above automatic pruning for obsolete remote-tracking branches

Alternatively, instead of pruning your obsolete local remote-tracking branches through git fetch -p, you can avoid making the extra network operation by just manually removing the branch(es) with the --remotes or -r flags:

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

See Also

  • git-branch(1) Manual Page.
  • git-fetch(1) Manual Page.
  • Pro Git § 3.5 Git Branching — Remote Branches.

В этом посте мы обсудим, как удалить локальные и удаленные ветки в git с помощью команды git-branch команда.

1. Удалить локальные ветки

Чтобы удалить локальную ветку, мы можем использовать git-branch команда с -d или же -D вариант.

git branch (-d | -D) <branchname>

а. -d option это псевдоним для --delete, который удаляет ветвь только в том случае, если она была полностью объединена с вышестоящей ветвью.

git branch -d <branchname>

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

Delete a local branch

 
б. -D option это псевдоним для --delete --force, которые позволяют удалять ветку независимо от ее статуса слияния.

git branch -D <branchname> # -D is same as -d -f

Ниже показано принудительное удаление локальной ветки. vlang который не был объединен в своей вышестоящей ветке.

Force delete local branch

2. Удалить удаленные ветки

Чтобы удалить удаленные ветки с помощью git-branch команда, укажите -r вариант вместе с -d вариант.

git branch -d -r <branchname>

remove remote branch using git-branch

 
Обратите внимание, что git-branch Команда может принимать несколько ветвей для удаления.

 
Удалять удаленные ветки имеет смысл только в том случае, если они больше не существуют в удаленном репозитории или если git fetch настроен не извлекать их. Вы можете использовать чернослив подкоманда git-remote для очистки устаревших удаленных веток.

git remote prune origin

В качестве альтернативы используйте get-fetch команда с --all возможность получать изменения со всех пультов и поставлять -p возможность удалить любые удаленные ссылки, которые больше не существуют на удаленном сервере.

git fetch —all -p

Как перечислить все локальные/удаленные ветки?

Чтобы получить список как удаленных, так и локальных ветвей, мы можем использовать -a вариант. Чтобы получить только удаленные ветки, используйте -r вариант.

list all git branches

 
б. -D option это псевдоним для --delete --force, которые позволяют удалять ветку независимо от ее статуса слияния.

git branch -D <branchname> # -D is same as -d -f

Ниже показано принудительное удаление локальной ветки. vlang который не был объединен в своей вышестоящей ветке.

Force delete local branch

2. Удалить удаленные ветки

Чтобы удалить удаленные ветки с помощью git-branch команда, укажите -r вариант вместе с -d вариант.

git branch -d -r <branchname>

remove remote branch using git-branch

 
Обратите внимание, что git-branch Команда может принимать несколько ветвей для удаления.

 
Удалять удаленные ветки имеет смысл только в том случае, если они больше не существуют в удаленном репозитории или если git fetch настроен не извлекать их. Вы можете использовать чернослив подкоманда git-remote для очистки устаревших удаленных веток.

git remote prune origin

В качестве альтернативы используйте get-fetch команда с --all возможность получать изменения со всех пультов и поставлять -p возможность удалить любые удаленные ссылки, которые больше не существуют на удаленном сервере.

git fetch —all -p

Как перечислить все локальные/удаленные ветки?

Чтобы получить список как удаленных, так и локальных ветвей, мы можем использовать -a вариант. Чтобы получить только удаленные ветки, используйте -r вариант.

list all git branches

Это все об удалении локальных и удаленных веток Git.

 
Также см:

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

Понравилась статья? Поделить с друзьями:
  • Инструкция general climate оконный кондиционер general climate gcw 05cmn1
  • Инструкция general climate gcp 09era1n1 инструкция
  • Инструкция gazeco 18 t 1
  • Инструкция garrett at max на русском языке
  • Инструкция garmin fenix 5 plus на русском