Я не могу удалить 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 .
Почему вы хотите это сделать? Есть ли другие филиалы?
Daniel B 10 лет назад
1
Действительно, есть и другие ветки (проверьте ссылку на изображение, не могли бы вы показать его мне, пожалуйста?). Нам пришлось перебазировать `master`, и мы сделали это на временной ветви, которая теперь должна стать` master`. Единственная проблема в том, что я не знаю, почему я не могу убить мастера на сервере.
Atcold 10 лет назад
0
Возможно, не тот ответ, который вы ищете, но вы можете принудительно переместить перебазированный `master` в` origin / master`, эффективно заменив старый на новый.
SlightlyCuban 10 лет назад
2
В дополнение к сообщению об ошибке, пожалуйста, отправьте команду, которую вы используете.
Kyralessa 10 лет назад
0
@Kyralessa, посмотрите на скриншот.
Atcold 10 лет назад
0
@SlightlyCuban, я пытался избежать * форсирования * вещей и нашел вместо этого «чистый» способ :)
Atcold 10 лет назад
0
Вы не единственный, кого я видел с представлением о том, что «сила» - ужасная или грязная вещь. Нам всегда говорят не заставлять вещи. Принуждение дверной ручки может сломать ее. Усиление винта может лишить голову. Но принуждение к Git не принесет никакого вреда, если вы знаете, что он заменит. Вы не испортите Git, не сломаете его и не оставите его неспособным функционировать. Наличие «-f» - это просто способ сказать: «Я понимаю, что, делая это, я * могу * потерять работу, но я знаю, что я делаю, так что продолжайте и делайте это в любом случае».
Kyralessa 10 лет назад
0
@ Atcold, я обычно не рекомендую форсировать, но, похоже, вы все равно указали `master` на другую ветку. В этом случае `--force` и` delete && push` будут иметь одинаковый конечный результат. Единственное отличие: удаление будет двухэтапной операцией, которая может быть более чистой, если вы не планируете нажимать сразу после нее.
SlightlyCuban 10 лет назад
0
@SlightlyCuban, моей первой заботой было понять, почему моя машина не сгибалась под мою волю. Теперь я снова ее хозяин! :)
Atcold 10 лет назад
0
2 ответа на вопрос
12
Kyralessa
Вместо того, чтобы фактически удалить мастер с сервера, вы можете заменить его следующим образом:
git push origin otherbranch:master -f
Это заменит master на содержимое другого филиала, но все равно будет называться master на удаленном компьютере. И тогда вы можете проверить мастер как мастер в вашем местном.
Хорошо спасибо! Я знаю, что могу форсировать вещи, но мне было интересно, почему я не смог удалить ветку `master`, и принятый ответ объясняет почему.
Atcold 10 лет назад
0
+1. Это был единственный способ удалить плохой первый коммит на пульте / origin / master.
ctn 9 лет назад
1
5
SlightlyCuban
Интересный факт: даже удаленные репозитории находятся на ветке. Вы получаете отказ, потому что вы пытаетесь удалить ветку, которую ваш источник в настоящее время "извлек".
Если у вас есть прямой доступ к репо, вы можете просто открыть каталог пустых репортов оболочки и использовать старый добрый каталог, git branchчтобы увидеть, какой источник ветки находится в данный момент. Чтобы изменить его на другую ветку, вы должны использовать git symbolic-ref HEAD refs/heads/another-branch.
Если вы используете такой сервис, как Github или Gitorious, вам придется использовать пользовательский интерфейс, который инструмент предоставляет вам для внесения изменений (см. Этот ответ, чтобы узнать, как это сделать в обычных инструментах).
Круто, это сработало и дало мне возможность узнать больше о `refs` в * Git *! Большое спасибо! (Да, я знал о том, как справиться с этим на * Github *, но не на нашем личном сервере.)
Atcold 10 лет назад
0