Есть ли способ git checkout предыдущей ветки? - PullRequest
570 голосов
/ 26 августа 2011

Я как бы хочу эквивалент cd - для мерзавца.Если я нахожусь в ветке master и извлекаю foo, мне бы хотелось набрать что-то вроде git checkout -, чтобы вернуться к master, и снова набрать его, чтобы вернуться к foo.

Существует ли что-нибудь подобное?Будет ли это трудно реализовать?

Ответы [ 7 ]

987 голосов
/ 26 августа 2011

Из примечаний к выпуску для 1.6.2

@{-1} можно сослаться на последнюю ветку, в которой вы были.Это
принимается не только там, где ожидается имя объекта, но и везде, где ожидается имя ветви, и действует так, как если бы вы ввели имя ветви.* будет работать как положено.

и

git checkout - - сокращение от git checkout @{-1}.

159 голосов
/ 18 октября 2015

Самый простой способ сделать это в настоящее время:

git checkout -

... который является псевдонимом:

git checkout @{-1}

git checkout minus

Если вы хотите узнать больше об этом, я написал целую статью об этом здесь: Оформить заказ Предыдущая ветка в Git .

27 голосов
/ 26 августа 2011

Как указывает @Karl и из git checkout manual:

В особом случае синтаксис "@ {- N}" для N-й последней ветви проверяет ветвь (вместо отсоединения).Вы также можете указать - что является синонимом "@ {- 1}".

Так что git checkout - и git checkout @{-1} будут работать в этом случае

БлижайшийЯ считаю, что использует git reflog и анализировать последние moving from branch1 to branch2 и git checkout branch1

10 голосов
/ 27 июля 2016

Просто добавив немного деталей к предыдущим ответам, чтобы понять механизм, с помощью которого git checkout @{-N} работает. Он просматривает журнал операций, чтобы просмотреть историю проверок, поэтому, если вы хотите реализовать что-то подобное самостоятельно, вы сможете проанализировать вывод git reflog в поисках checkout: строк. Вы можете проверить реализацию в git source sha1_name.c, в частности функцию interpret_nth_prior_checkout.

3 голосов
/ 02 августа 2017

Я попал на этот вопрос с той же мыслью, чтобы проверить мою предыдущую ветку.Я использую ohmyz в Mac.Ниже команда помогла мне.

$ gco -
$ git checkout -
1 голос
/ 17 января 2019

Вот указатели на части документации Git, которые описывают решения git checkout - и git checkout @{-1}, заданные другими ответами:

  • При указании ревизии Git для любой команды,@{-<n>}, например, @{-1} означает « n -й ветвь / коммит, проверенный перед текущим». Документациядля git checkout <branch> повторяется: «Вы можете использовать синтаксис @{-N} для ссылки на N-ую последнюю ветвь / фиксацию, извлеченную с использованием операции git checkout».

  • Для аргумента <branch>, равного git checkout, «вы также можете указать« - », что является синонимом« @{-1} ». *

1 голос
/ 26 ноября 2018

Наиболее популярным решением является:

git checkout @{-N}

Где N - количество шагов для перехода назад в историю покупок.

...