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