как вернуться к последнему коммиту после проверки предыдущего коммита?

<p>иногда я проверяю какую-то предыдущую версию кода для проверки или тестирования. я видел инструкции о том, что делать, если я хочу изменить предыдущие коммиты - но предположим, что я не делаю изменений. после того как я сделал, например <code>git checkout head^</code>, как мне вернуться к концу ветви? .. <code>git log</code> больше не показывает мне sha последнего коммита.</p>

<p>если вы знаете, что коммит, к которому вы хотите вернуться, является заголовком какой-либо ветви или помечен, то вы можете просто</p><pre><code>git checkout branchname </code></pre><p>вы также можете использовать <code>git reflog</code>, чтобы увидеть, на какие другие коммиты указывал ваш head (или любой другой реф) в прошлом.</p><hr><p>отредактировано, чтобы добавить:</p><p>в более новых версиях git, если вы только запускали <code>git checkout</code> или что-то еще, чтобы переместить свою <code>head</code> один раз, вы также можете сделать </p><pre><code>git checkout - </code></pre><p>чтобы вернуться туда, где он был до последней проверки. это было мотивировано аналогией с идиомой shell <code>cd -</code>, чтобы вернуться к любому рабочему каталогу, в котором он был ранее.</p>

<p><strong> git checkout master </strong></p><p>мастер - это совет или последний коммит.<strong> gitk </strong>покажет вам только то, где вы находитесь в дереве в данный момент.<strong> git reflog </strong>покажет все коммиты, но в этом случае вам просто нужен совет, так что git checkout master.</p>

<p>наткнулся на этот вопрос только сейчас и есть что добавить</p><p><strong> чтобы перейти к самой последней фиксации: </strong></p><pre><code>git checkout $(git log --branches -1 --pretty=format:"%h") <strong> объяснение: </strong>git log --branches показывает журнал коммитов из всех локальных филиалов -1 ограничение до одного коммита → последний коммит --pretty=format:"%h" формат для отображения только хэша коммита git checkout $(...)</code> использовать вывод subshell в качестве аргумента для оформления заказа</p><p><strong> заметка: </strong></p><p>это приведет к отделению головы (потому что мы обращаемся непосредственно к коммиту). этого можно избежать, извлекая имя ветви с помощью <code>sed</code>, как описано ниже.</p><hr><p><strong> чтобы перейти на ветку самого последнего коммита: </strong></p><pre><code>git checkout $(git log --branches -1 --pretty=format:'%d' | sed 's/., //g') <strong> объяснение: </strong>git log --branches показывает журнал коммитов из всех локальных филиалов -1 ограничение до одного коммита → последний коммит --pretty=format:"%d" формат для отображения только имен ссылок | sed 's/., //g' игнорировать все, кроме последней из нескольких ссылок () git checkout $(...)</code> использовать вывод subshell в качестве аргумента для оформления заказа</p><p><em>*) head и удаленные ветви отображаются первыми, локальные ветви располагаются последними в алфавитном порядке по убыванию, поэтому оставшиеся ветви будут именами первой ветви в алфавитном порядке.</em></p><p><strong> заметка: </strong></p><p>это всегда будет использовать (в алфавитном порядке) имя первой ветви, если есть несколько для этого коммита.</p><hr><p>в любом случае, я думаю, что лучшим решением было бы просто отобразить имена ссылок для самого последнего коммита, чтобы знать, где оформить заказ:</p><pre><code>git log --branches -1 --pretty=format:'%d' </code></pre><p>например. создайте псевдоним <code>git top</code> для этой команды.</p>

<p>посмотрите на графический gui ... <code>gitk</code> он показывает все коммиты. иногда графически легче работать ... ^^</p>

<p>для этого вы можете использовать одну из следующих команд git:</p><pre><code>git checkout master git checkout branchname </code></pre>

<p>показать все ветки и зафиксировать <br> <strong> git log - ветви --oneline </strong></p><p>показать последний коммит <br> <strong> git log - филиалы -1 --oneline </strong></p><p>показать перед последним коммитом <br> <strong> git log - филиалы -2 --oneline </strong></p>

<p>если у вас есть ветка, отличная от главной, один простой способ - проверить эту ветку, а затем проверить главную. вуаля, вы вернулись на кончик мастера. там, наверное, умнее способов ...</p>

<pre><code>git reflog //find the hash of the commit that you want to checkout git checkout <commit number>> </code></pre>