Подтвердить что ты не робот

Git: установить ветвь в текущий ref

Из-за использования подмодулей в моих проектах я часто нахожусь на "(без ветки)". Поскольку я также добавляю код к тем подмодулям, которые я совершаю там. Когда я хочу подтолкнуть эти подмодули, мне нужно быть в курсе. Отсюда мой вопрос:

Есть ли способ/ярлык в git (командной строке), чтобы установить локальную ветвь в текущую фиксацию /HEAD без обхода

git checkout the_branch
git reset --hard <previous commit-ish>

Чтобы быть более точным, моя настоящая проблема с вышеописанным "обходом" заключается в том, что я временно оставляю исходный HEAD с помощью команды checkout. Этого можно избежать с помощью команды git branch -f (благодаря CharlesB).

4b9b3361

Ответ 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