Git: установить ветку на текущий ref - PullRequest
42 голосов
/ 28 сентября 2011

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

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

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

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

Ответы [ 2 ]

58 голосов
/ 28 сентября 2011

Извлечь ветвь с помощью -B: это сбросит ветвь на HEAD, которая является текущей ссылкой.

git checkout -B <branch> 

Из документов :

Если задано -B, создается, если его не существует; в противном случае он сбрасывается. Это транзакционный эквивалент

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

то есть ветвь не сбрасывается / не создается, если "git оформить заказ "успешно.

20 голосов
/ 28 сентября 2011
git checkout -B the_branch HEAD

Это извлечет the_branch при коммите HEAD, даже если the_branch указывал где-то еще раньше. Он был добавлен в один из последних выпусков git, поэтому он может быть недоступен. Альтернативный маршрут будет git branch -D the_branch && git checkout -b the_branch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...