Как принудительно удалить удаленную ветку в 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, вы можете прочитать об этом здесь.