Возвращать хранилище в специфический commit

Основанный в: Как я могу возвращать последний commit в прежнее состояние в Git?.

Есть какой-то способ возвращать хранилище Git в commit в espeficico?.

Например:

  • commit в "Первый commit"
  • commit b
  • commit c
  • commit d
  • commit и
  • commit f
  • commit g
  • commit h "Настоящая версия"

Есть способ возвращаться в "commit c"?.

25
задан 13.04.2017, 16:00
2 ответа

Только ты должен делать git checkout commitC где commitC это hash выражения commit.

Пример:

Ты ищешь в log git, каков commit, в который ты хочешь возвратиться:

git log

Ты будешь считать что-то этим:

commit eb9b03c2e22305c965b610aa84a7d316e5cb208d
Author: oscar <oscar@oscar.(none)>
Date:   Thu Sep 19 16:05:51 2013 +0200

    commit3

commit 96046152e2515d651d777bac66602e4a50654f49
Author: oscar <oscar@oscar.(none)>
Date:   Thu Sep 19 00:13:37 2013 +0200

    commit2

commit 23abd7d49c00541fcac17acb1babd7a60a3e7c6e
Author: oscar <oscar@oscar.(none)>
Date:   Wed Sep 18 23:53:25 2013 +0200

    commit1 

Ты можешь видеть больше информации на git log здесь.

Потом ты это делаешь:

git checkout eb9b03c

Для большей информации на git checkout ты можешь видеть здесь.

Тогда ты HEAD он будет обозначаться к commit3, будучи результатом, в котором ты нуждаешься.

24
ответ дан 01.12.2019, 08:14

Решение

Достаточно выполнять следующую команду (remplazar <hash>):

$ git checkout <hash>

Объяснение

Чтобы мочь реализовывать разрыв подтверждения приема (commit) в другую, ты должен знать число (hash), которым он остался зарегистрированным. Принимая во внимание, что официальная книга Git на испанском языке, секции 2.3 Основ Git - Видя исторического подтверждений приема, говорит нам:

Сделав несколько подтверждений приема, или если ты клонировал хранилище, которое уже было у исторического подтверждений приема, вероятно захоти посмотреть назад, чтобы видеть, какие изменения осуществились. Самый основной и могущественный инструмент, чтобы это делать, - команда git log.

Выполнив команду git log на твоем проекте, ты будешь считать что-то похожим на это:

$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    Cambiado el número de versión

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    Removido código de prueba innecesario

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    Primera confirmación

hash (или число подтверждения приема) будет буквенно-цифровым набором, который следуемый словом commit. Ты скопируешь выражение hash, чтобы это использовать с командой git checkout <hash> что возьмется за то, чтобы двигать указатель HEAD твоего проекта в указанное подтверждение приема. Визуальный пример (принимая во внимание, что ты, проект - ветвь master):

Ejemplo de git checkout

Таким образом, мы можем воспринимать, что, хотя твой указатель сейчас указывает на предыдущее задержание, твои изменения, следующие за нею продолжают существовать.

Ты можешь получать больше официальной информации и на испанском языке, связанном с этой темой в следующей ссылке: 6.1 Программные средства Git - Выбора конкретных подтверждений приема изменений


Короткий ШАХ: Просто давая ему первые символы кода SHA-1, Git - достаточно умное, как чтобы представлять себе каков, это подтверждение приема изменений (commit) желанная. Необходимо набивать, по крайней мере, 4 символа и эти должны быть не неясными - а именно, должен существовать единственный объект в хранилище, код которого начался из-за вышеупомянутого начального куска ШАХА-.

13
ответ дан 01.12.2019, 08:14

Теги

Похожие вопросы