Есть ли способ git проверить предыдущую ветку?
Мне нужен эквивалент cd -
для git. Если я нахожусь в ветке master
, и я проверяю foo
, мне бы хотелось набрать что-то вроде git checkout -
, чтобы вернуться к master
и снова ввести его, чтобы вернуться к foo
.
Есть ли что-нибудь подобное? Было бы трудно реализовать?
Ответы
Ответ 1
Из примечания к выпуску для 1.6.2
@{-1}
- это способ ссылаться на последнюю ветку, в которой вы были. Это
принимается не только там, где ожидается имя объекта, но и где угодно имя ветки ожидается и действует так, как будто вы набрали имя ветки.
Например. git branch --track mybranch @{-1}
, git merge @{-1}
и
git rev-parse --symbolic-full-name @{-1}
будет работать как ожидалось.
и
git checkout -
является сокращением для git checkout @{-1}
.
Ответ 2
Самый простой способ сделать это сейчас:
git checkout -
... который является псевдонимом:
git checkout @{-1}
![git checkout минус]()
Если вы хотите узнать больше об этом, я написал здесь всю статью: Оформить покупку Предыдущая ветвь В Git.
Ответ 3
Как указывает @Karl и из руководства git checkout
:
В качестве специального случая синтаксис "@{- N}" для проверки последней ветки N-й (вместо отсоединения). Вы также можете указать - синонимом "@{- 1}".
Таким образом, оба git checkout -
и git checkout @{-1}
будут работать в этом случае
Ближе всего я полагаю, что использую git reflog
и анализирую последние moving from branch1 to branch2
и git checkout branch1
Ответ 4
Просто добавьте более подробную информацию к предыдущим ответам, чтобы понять механизм, с помощью которого работает git checkout @{-N}
. Он просматривает журнал, чтобы проверить историю выписки, поэтому, если вы хотите реализовать что-то подобное по своему усмотрению, вы должны проанализировать вывод git reflog
для поиска строк checkout:
. Вы можете проверить реализацию в источнике git sha1_name.c
, в частности, функции interpret_nth_prior_checkout
.
Ответ 5
Я приземлился на этот вопрос с той же мыслью, чтобы проверить мою предыдущую ветку. Я использую ohmyz в Mac
. Ниже команда помогла мне.
$ gco -
$ git checkout -
Ответ 6
Наиболее популярным решением является:
git checkout @{-N}
Где N-ступенчатое число ветвей, чтобы вернуться к истории касп.
Ответ 7
Вот ссылки на части документации Gits, которые описывают решения git checkout -
и git checkout @{-1}
заданные другими ответами:
-
При указании ревизии Git для любой команды @{-<n>}
, например, @{-1}
означает "n-й ветвь/коммит извлечен перед текущей". Документация для git checkout <branch>
повторяет: "Вы можете использовать синтаксис @{-N}
для ссылки на N-ую последнюю ветвь/фиксацию, извлеченную с помощью операции git checkout
".
-
Для <branch>
аргумент git checkout
, "вы можете также указать„ -
который является синонимом“ @{-1}
."
Ответ 8
Git-версия 2.23
представила команду git switch
, которую вы можете использовать для этого (и не только). Цитирование официальной документации:
Переключиться на указанную ветку. Рабочее дерево и индекс обновляются в соответствии с веткой. Все новые коммиты будут добавлены в кончик этой ветки.
В вашем конкретном случае вы можете выполнить команду git switch -
, чтобы вернуться в ветку, в которой вы были ранее. Вы можете выполнить ту же команду еще раз, чтобы вернуться к первой ветки.
Постскриптум Это не значит, что вы еще не знаете, как это сделать (я имею в виду, что прошло 7 лет с тех пор, как вы задали этот вопрос), но эта команда менее запутанна и дружелюбна для начинающих, поскольку она решает общую путаницу, которая возникает при использовании git checkout
.