Как принудительно удалить удаленную ветку в GitHub?

У меня есть две удаленные ветки:

 - pending-issues-in-project
 - new-issues-in-project

Я попытался удалить pending-issues-in-project следующим образом:
git push origin :pending-issues-in-project, но я получил ошибку:

error: unable to push to unqualified destination: pending-issues-in-project
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]:forkedRepo/RepoName.git'

Итак, я думал, что я удалил ветвь pending-issues-in-project, но когда я запустил приложение git branch -a он показывает ветвь pending-issues-in-project в списке.
Когда я попробовал то же самое (попробовал удалить) для new-issues-in-project, он сработал.
Я уже удалил оба ветки с локального сервера, используя git branch -D branchName.

Если ошибка возникает, потому что ветвь не существует в репозитории, тогда почему он входит в список удаленных веток?
и
Есть ли способ принудительного удаления удаленной ветки?

Спасибо за ваше время.

Ответ 1

Вам нужно сделать:

git remote prune origin

удалить удаленную ветку отслеживания в локальном репозитории git (обрезание удаляет любую ветвь, которая больше не существует в удаленном источнике). После этого вы не увидите его под git branch -a

Ответ 2

Ветвь, которую вы видите, называется так называемой удаленной ветвью. Он находится в вашем локальном репозитории и представляет собой последнее место, где вы видели эту ветку в удаленном репозитории. Git использует такие ветки, чтобы вам не приходилось разговаривать с удаленным репозиторием каждый раз, когда вы хотите с ним справиться; вы просто обновляете/извлекаете один раз, ветвь удаленного стеллажа обновляется, и вы можете работать с этим. В вашем случае ветвь в удаленном репозитории давно удалена; вам просто нужно удалить копию в локальном репозитории.

Есть два основных способа удалить его:

  • git branch -d -r origin/pending-issues-in-project удаляет только эту ветку; и
  • git remote prune origin удаляет все такие устаревшие удаленные ветки. Вы также можете обновить одновременно: git remote update --prune origin

Ответ 3

Простите мой неуклюжий английский. Надеюсь, ты сможешь понять мой ответ.

  • команда git push origin :pending-issues-in-project, вероятно, неверна. Возможно, вы имели в виду: git push origin pending-issues-in-project. Он подталкивает ветку к github.

  • Если ошибка возникает, потому что ветвь не существует в репозитории, то почему она входит в список удаленных веток? Поскольку git является распределенной системой управления версиями, сервер github имеет базу данных для хранения ретрансляции .git и данных, которые вы нажимаете на нее. Итак, если ваша команда use: git branch -de branchName, она просто удаляет локальную ветвь и не помешает github.git и данные, которые вы нажимаете на нее.

  • Есть ли способ принудительного удаления удаленной ветки? Да, это возможно. команда:

    git push origin --delete <branchName>
    
  • Если вы хотите узнать больше о функции распространения системы управления версиями git, вы можете найти эту ссылку полезной: git распределена особенность.

    И если вы хотите узнать больше об удалении ветки на github с помощью git, вы можете прочитать об этом здесь.