Извлечение предыдущих закреплений

We use cookies. Read the Privacy and Cookie Policy

Git позволяет извлечь из журнала любое закрепление, не только последнее. Для этого в команде вместо точки указываются первые 6 символов идентифи­катора. Выполняя извлечение, вы можете просмотреть более раннее закрепление и либо вернуться к своему последнему закреплению, либо отказаться от всей ­последней работы и продолжить разработку с более раннего закрепления:

git_practice$ git log --pretty=oneline

08d4d5e39cb906f6cff197bd48e9ab32203d7ed6 Extended greeting.

be017b7f06d390261dbc64ff593be6803fd2e3a1 Started project.

git_practice$ git checkout be017b

Note: checking out 'be017b'.

(1) 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 be017b7... Started project.

git_practice$

При извлечении предыдущего закрепления вы покидаете ветвь master и входите в состояние, которое Git называет отсоединенным состоянием HEAD (1) . HEAD — текущее состояние проекта; «отсоединенным» оно называется потому, что мы покинули именованную ветвь (master в данном случае).

Чтобы вернуться к ветви master, извлеките ее:

git_practice$ git checkout master

Previous HEAD position was be017b7... Started project.

Switched to branch 'master'

git_practice$

Вы снова возвращаетесь к ветви master. Не вносите изменения в проект при извлечении старого закрепления, если не хотите использовать использовать расширенные возможности Git. Но вы можете вернуться к предыдущему состоянию, если над проектом больше никто не работает. Работая в ­ветви master, введите следующую команду:

(1) git_practice$ git status

# On branch master

nothing to commit, working directory clean

(2)git_practice$ git log --pretty=oneline

08d4d5e39cb906f6cff197bd48e9ab32203d7ed6 Extended greeting.

be017b7f06d390261dbc64ff593be6803fd2e3a1 Started project.

(3)git_practice$ git reset --hard be017b

HEAD is now at be017b7 Started project.

(4)git_practice$ git status

# On branch master

nothing to commit, working directory clean

(5)git_practice$ git log --pretty=oneline

be017b7f06d390261dbc64ff593be6803fd2e3a1 Started project.

git_practice$

Сначала мы проверяем статус и убеждаемся в том, что текущей является ветвь master (1) . В журнале присутствуют оба закрепления (2). Затем выдается команда git reset --hard с первыми шестью символами идентификатора того закрепления, к которому нужно вернуться (3). Далее повторная проверка статуса показывает, что мы находимся в главной ветви, а закреплять нечего (4). Повторное обращение к журналу показывает, что проект находится в том состоянии, к которому мы решили вернуться (5).