Удалить ветку, начинающуюся с дефиса - PullRequest
4 голосов
/ 19 апреля 2011

Мне удалось создать ветку в git с именем '-f'

, например

$ git branch
* (no branch)
   -f

Как мне удалить чертову штуку? git branch -d -f не будет работать, как и git branch -d '-f' или даже git branch -d -f -f

Ответы [ 3 ]

15 голосов
/ 19 апреля 2011
git branch -d -- -f

Символ -- в целом прекратит синтаксический анализ параметров командной строки со многими инструментами Linux.

Другой способ -

git update-ref -d refs/heads/-f

но git-update-ref довольно опасно.

3 голосов
/ 19 апреля 2011

Не уверен, что это сработает, но аргумент -- в командах в стиле Unix / Linux часто говорит команде, что вы завершили передачу параметров, а теперь вы передаете реальные аргументы:

git branch -d -- '-f'
0 голосов
/ 09 ноября 2013

Я по глупости назвал ветку, начинающуюся с дефиса, а затем проверил мастера. Я не хотел удалять свою ветку, у меня была работа в ней.

Ни один из них не работал:

git checkout -dumb-name

git checkout -- -dumb-name

" с, ' с и \ с тоже не помогли.

Это сработало: зайдите в вашу рабочую копию .git / refs /head, найдите имя файла "-dumb-name" (или что-то еще) и получите хэш ветви. Тогда:

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...