Git Checkout - PullRequest
       10

Git Checkout

0 голосов
/ 23 мая 2018

Как использовать git checkout для предыдущего коммита?Проблема: у меня есть 3 коммита, например A, B и C (C - последний коммит) A <- B <- C Я хочу перейти к моей предыдущей версии проекта, которая является коммитом A, затем использует<code>git checkout <A hash> Теперь я нахожусь в коммите A, после этого я хочу перейти на коммит B, я хочу, чтобы хэш коммита git log не отображался, затем я хочу переключиться обратно на коммит B и C один за другим.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Я думаю, что проблема, которую вы описываете, состоит в том, что после того, как вы сделали проверку на коммите А, у вас возникают трудности с поиском хеша коммита С, к которому вы хотите вернуться.Самое простое, что нужно сделать, это создать ветку или тег на коммите C перед тем, как вы извлечете коммит A. Но если вы этого не сделали, git reflog на помощь:

$ git init
$ for i in a b c; do echo $i > file; git add file; git commit -m "Write $i to file"; done
[master (root-commit) 0d89e41] Write a to file
 1 file changed, 1 insertion(+)
 create mode 100644 file
[master a8f774a] Write b to file
 1 file changed, 1 insertion(+), 1 deletion(-)
[master c52fd0c] Write c to file
 1 file changed, 1 insertion(+), 1 deletion(-)
$ git log --pretty=oneline
c52fd0c4ae9fb40b4e7355c7a2f8ecbe80d9465c (HEAD -> master) Write c to file
a8f774a88af68481db6106f1d613680769c1cde9 Write b to file
0d89e41907055d75ac8c65d40feec4fc1ee9e381 Write a to file
$ git checkout HEAD~2
Note: checking out 'HEAD~2'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 0d89e41... Write a to file
$ # Oh no!  I can't figure out the hash of commit C
$ git reflog
0d89e41 (HEAD) HEAD@{0}: checkout: moving from master to HEAD~2
c52fd0c (master) HEAD@{1}: commit: Write c to file
a8f774a HEAD@{2}: commit: Write b to file
0d89e41 (HEAD) HEAD@{3}: commit (initial): Write a to file

Теперь, чтобы получитьвернувшись к коммиту C, вы можете ссылаться на него как c52fd0c или HEAD@{1}.(Последнее будет меняться по мере внесения изменений в историю, при этом число в скобках будет увеличиваться каждый раз.)

0 голосов
/ 23 мая 2018

Если вы хотите получить коммиты от определенного коммита, вы можете присвоить имя ветви git log.Если вашей основной веткой является master, следующая команда получит вам нужные хеши.

git log master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...