2013-11-13 3 views
0

Я не знаю, как установить ссылку HEAD для голого репозитория.Установить HEAD для открытого хранилища

Бросьте BareRepositoryException с сообщением

Additional information: An error was raised by libgit2. Category = Repository (BareRepo).

, когда я пытаюсь repo.Checkout(repo.Branches["balabala"])

+0

Этот вопрос касается того, когда вы используете 'libgit2sharp'. Для тех, кто придет сюда, чтобы узнать, как установить 'HEAD' для голого репозитория в командной строке или в службе хостинга git, посмотрите https://stackoverflow.com/a/3302018/260122 и https: // stackoverflow.com/a/2962737/260122. – clacke

ответ

1

Проверка действительно обновит обновление HEAD, но также обновит текущее содержимое рабочего файла с выпиской Commit.

Это действительно не работает с открытым репозиторием, так как нет рабочего каталога.

Правильный способ перемещения HEAD в голом хранилище является обновлением цели этой ссылки:

  • repo.Refs.UpdateTarget(repo.Refs.Head, repo.Refs["myBranch"]) обновит HEAD, чтобы она указывала на ветку mybranch, сохраняя при этом его прикрепленной

  • repo.Refs.UpdateTarget(repo.Refs.Head, repo.Refs["myBranch"].Tip.Id) обновит HEAD, чтобы сделать это непосредственно на фиксаторе на кончике ветви, таким образом отсоединениеHEAD

+0

Спасибо! очень подробный. – Aimeast

0

штраф, я нашел repo.Refs.UpdateTarget("HEAD", repo.Branches["master"].Tip.Sha), это работает.