Git: установить ветвь в текущий ref
Из-за использования подмодулей в моих проектах я часто нахожусь на "(без ветки)". Поскольку я также добавляю код к тем подмодулям, которые я совершаю там. Когда я хочу подтолкнуть эти подмодули, мне нужно быть в курсе. Отсюда мой вопрос:
Есть ли способ/ярлык в git (командной строке), чтобы установить локальную ветвь в текущую фиксацию /HEAD без обхода
git checkout the_branch
git reset --hard <previous commit-ish>
Чтобы быть более точным, моя настоящая проблема с вышеописанным "обходом" заключается в том, что я временно оставляю исходный HEAD с помощью команды checkout. Этого можно избежать с помощью команды git branch -f
(благодаря CharlesB).
Ответы
Ответ 1
Зарезервируйте ветку с помощью -B
: это будет reset ветвь в HEAD, которая является текущим номером.
git checkout -B <branch>
Из docs:
Если задан -B, создается, если он не существует; в противном случае это reset. Это транзакционный эквивалент
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
т.е. ветвь не reset/создана, если только gitпроверка ".
Ответ 2
git checkout -B the_branch HEAD
Это будет checkout the_branch
при фиксации HEAD, даже если the_branch
указал где-то еще раньше. Он был добавлен в один из последних релизов git, поэтому у вас может не быть этого доступного. Альтернативный маршрут будет git branch -D the_branch && git checkout -b the_branch