Git безопасно восстановить старый коммит и вернуться к последнему

У меня есть вопрос, связанный с git

Мне нужно сделать следующее:

  1. Восстановить репозиторий, чтобы он был таким, каким он был в каком-то конкретном старом коммите.
  2. Создайте ветку из этого состояния и добавьте в ветку некоторые изменения.
  3. Вернитесь к мастеру и восстановите последнее состояние.

Как правильно и безопасно это сделать? Я думаю о первом варианте

git revert <mycommit_name> 

или

git reset --soft <mycommit_name>

заранее спасибо


76
1

Ответ:

Решено

Я думаю, вы спрашиваете, как вы работаете на основе более старой версии.

Например, у вас есть такие коммиты...

* C [master] - added the cool thing
|
* B - fixed that annoying bug
|
* A - did that mundane task

Вы можете увидеть такой вид вашего репозитория с помощью git log --graph --decorate --all --oneline.

Теперь, по какой-то причине, вы хотите поработать над коммитом B. Создайте ветку из коммита B. Ветка — это не что иное, как метка коммита. git-branch опционально принимает отправную точку для новой ветки.

$ git branch B_branch B

* C [master] - added the cool thing
|
* B [B_branch] - fixed that annoying bug
|
* A - did that mundane task

Теперь у вас есть B_branch в коммите B. Переключитесь на эту ветку и сделайте несколько коммитов. Они будут поверх Б. Мастера это не затронет.

$ git switch B_branch
...work work work...
$ git commit -m 'B commit 1'
...work work work...
$ git commit -m 'B commit 2'

* E [B_branch] - B commit 2
|
* D - B commit 1
|
|  * C [master] - added the cool thing
| /
* B - fixed that annoying bug
|
* A - did that mundane task

И когда вы закончите, переключитесь обратно на мастера. git switch master.