Как удалить оригинал / мастер в Git

10

Я не могу удалить origin/masterс моего сервера. Понятия не имею почему.

Скриншот моего терминала

Сообщение об ошибке следующее

remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error: 
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error: 
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to 'acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git'

Нет, я не использую Github .

Atcold
источник
1
Почему вы хотите это сделать? Есть ли другие филиалы?
Даниэль Б
Действительно, есть другие ветки (проверьте ссылку на изображение, на самом деле, не могли бы вы показать его для меня, пожалуйста?). Нам пришлось перебазировать master, и мы делали это на временной ветке, которая сейчас должна стать master. Единственная проблема в том, что я не знаю, почему я не могу убить мастера на сервере.
Atcold
2
Может быть, не тот ответ, который вы ищете, но вы можете принудительно подтолкнуть ребас, masterчтобы origin/masterэффективно заменить старый на новый.
Слегка
В дополнение к сообщению об ошибке, пожалуйста, отправьте команду, которую вы используете.
Kyralessa
@Kyralessa, посмотрите на скриншот.
Atcold

Ответы:

7

Интересный факт: даже удаленные репозитории находятся на ветке. Вы получаете отказ, потому что вы пытаетесь удалить ветку, которую ваш источник в настоящее время "извлек".

Если у вас есть прямой доступ к репо, вы можете просто открыть каталог пустых репортов оболочки и использовать старый добрый каталог, git branchчтобы увидеть, в каком из источников находится ветка. Чтобы изменить его на другую ветку, вы должны использовать git symbolic-ref HEAD refs/heads/another-branch.

Если вы используете такой сервис, как Github или Gitorious, вам придется использовать пользовательский интерфейс, который инструмент предоставляет вам для внесения изменений (см. Этот ответ, чтобы узнать, как это сделать в обычных инструментах).

SlightlyCuban
источник
Удивительный, он работал , и это дало мне возможность больше узнать о refsв Git ! Большое спасибо! (Да, я знал о том, как с этим справляться на Github , но не на нашем личном сервере.)
Atcold
12

Вместо того, чтобы фактически удалить мастер с сервера, вы можете заменить его следующим образом:

git push origin otherbranch:master -f

Это заменит master на содержимое другого филиала, но все равно будет называться master на удаленном компьютере. И тогда вы можете проверить мастер как мастер в вашем местном.

Kyralessa
источник
Хорошо, спасибо! Я знаю, что могу форсировать вещи, но мне было интересно, почему я не смог удалить masterветку, и принятый ответ объясняет почему.
Atcold
1
+1. Это был единственный способ удалить плохой первый коммит на пульте / origin / master.
ctn