Я вроде хочу эквивалент cd -
для мерзавца. Если я нахожусь в отделении master
и я оформляю заказ foo
, я хотел бы иметь возможность напечатать что-то вроде, git checkout -
чтобы вернуться master
, и иметь возможность напечатать это снова, чтобы вернуться foo
.
Существует ли что-нибудь подобное? Будет ли это трудно реализовать?
git
git-checkout
Мэтт Бриггс
источник
источник
gc-
или это было сокращением дляgit checkout -
Ответы:
Из заметок о выпуске для 1.6.2
а также
источник
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
@{u}
, которая является восходящей веткой текущей ветки. Это очень полезно, например, дляgit log @{u}..
списка тех коммитов, которые еще не получены. И обратное,git log ..@{u}
которое является просто локальными коммитами, которые еще не выдвинуты.Самый простой способ сделать это в настоящее время:
... который является псевдонимом:
Если вы хотите узнать больше об этом, я написал целую статью об этом здесь: Checkout The Previous Branch In Git .
источник
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] }
. В bash вы должны написать что-то эквивалентное (получить reflog и отфильтровать его в строки, содержащие строку ": checkout:", а затем извлечь имя ветви). Это на самом деле то, что делает мерзавецКак указывает @Karl и из
git checkout
руководства:Так что и так
git checkout -
иgit checkout @{-1}
будет работать в этом случаеБлижайший, я полагаю, используетgit reflog
и анализирует последниеmoving from branch1 to branch2
иgit checkout branch1
источник
Просто добавив некоторые подробности к предыдущим ответам, чтобы понять механизм, с помощью которого
git checkout @{-N}
работает. Он просматривает журнал, чтобы просмотреть историю проверок, поэтому, если вы хотите реализовать что-то подобное самостоятельно, вы сможете анализировать результатыgit reflog
поискаcheckout:
строк. Вы можете проверить реализацию в исходном коде gitsha1_name.c
, в частности, функциюinterpret_nth_prior_checkout
.источник
Git версия
2.23
представилаgit switch
команду, которую вы можете использовать для этого (и многое другое). Цитирование официальной документации:В вашем конкретном случае вы можете
git switch -
вернуться к той ветке, в которой вы были ранее. Вы можете выполнить ту же команду еще раз, чтобы вернуться к первой ветви.PS Дело не в том, что вы еще не знаете, как это сделать (я имею в виду, что прошло 7 лет с тех пор, как вы задали этот вопрос), но эта команда менее запутанна и дружелюбна для начинающих, поскольку она устраняет общую путаницу , возникающую при использовании
git checkout
.источник
Я приземлился на этот вопрос с той же мыслью, чтобы проверить мою предыдущую ветку. Я использую Ohmyz в
Mac
. Ниже команда помогла мне.источник
gco
как короткий способ написанияgit checkout
. Такgco -
что просто звонкиgit checkout -
.git checkout -
. для отказоустойчивого обновлено.Наиболее популярным решением является:
Где N - количество шагов по веткам для возврата назад в историю оформления заказа.
источник
Вот ссылки на части документации Git, которые описывают
git checkout -
иgit checkout @{-1}
решения других ответов:При указании ревизии Git для любой команды,
@{-<n>}
например,@{-1}
означает « n- й ветвь / коммит извлечен перед текущей». Документация дляgit checkout <branch>
повторов: «Вы можете использовать@{-N}
синтаксис для ссылки на N-ую последнюю ветку / фиксацию, извлеченную с помощьюgit checkout
операции».Для
<branch>
аргументаgit checkout
«вы также можете указать«-
», который является синонимом«@{-1}
».источник