2016-07-11 2 views
2

у меня есть один филиал на этом хранилище GitHub (который не хозяин), и теперь я пытаюсь переименовать его и по какой-то причине, я получаю эту ошибку:Git отказывается удалить ветвь

git push origin :OldName 
To [email protected]:user/gitRepo.git 
! [remote rejected] OldName (refusing to delete the current branch: refs/heads/OldName) 
error: failed to push some refs to '[email protected]:user/gitRepo.git' 

Это потому, что у меня нет какой-либо ведущей ветки? Вот мой git branch -a:

OldName 
remotes/origin/HEAD -> origin/OldName 
remotes/origin/OldName 

ответ

4

Если выход из git branch -a быть точным, то в этом случае вы имеете только одну ветвь OldName и единственный соответствующий филиал по одно и то же имя на GitHub. Для вас не имеет смысла удалять единственную ветвь в репозитории, потому что тогда в этом репозитории не будет никакого контента, ничего, кроме reflog, если это все еще существует.

В частности, ошибка, скорее всего, вызвана по несколько иной причине. Поскольку ветвь OldName является единственной ветвью в GitHub, также, скорее всего, ветвь по умолчанию для вашего репозитория. GitHub не позволит вам удалить ветвь по умолчанию, потому что тогда это означает, что кто-то просматривает ваше репо, возможно, не сможет увидеть контент.

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

Локально

git checkout -b NewName # create a dummy branch from OldName 
git push origin NewName 

На GitHub

Измените ветвь по умолчанию на NewName

Локально (снова):

git push origin :OldName 
2

Это не [мерзавец] ограничение, но [GitHub] делает дополнительный слой защиты вменяемость для вас. Измените [ветвь по умолчанию] в проекте GitHub, а затем повторите попытку.

Пример URL (изменение [пользователь] и [проект]):

https://github.com/[user]/[project]/settings/branches

Смежные вопросы