VS Code Git: возврат к указанному c коммиту - PullRequest
0 голосов
/ 12 января 2020

Я использую VS Code и хочу go вернуться к указанному c коммиту A. Я сейчас на C:

A -> B -> C

Последний коммит, который я сделал, был C, теперь я хочу вернуть все файлы к их состоянию во время фиксации A. Как это сделать в VS Code? (использование командной строки внутри VS Code также будет хорошо при необходимости) -

1 Ответ

2 голосов
/ 12 января 2020

То есть, вы sh B и C были во вторичной ветке? Сделайте новую ветку прямо сейчас (с головой в C), чтобы сохранить B и C, но не проверяйте это; остаться на хозяине или что-то еще. Сейчас git reset --hard A.

Пример

Я сделаю A, затем B, затем C, на мастере:

$ echo "this is A" >> test.txt
$ git init
Initialized empty Git repository in /Users/mattmobile/Desktop/f/.git/
$ git add .
$ git commit -a -m "this is A"
[master (root-commit) 14cfab0] this is A
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
$ echo "this is B" >> test.txt
$ git commit -a -m "this is B"
[master d55a780] this is B
 1 file changed, 1 insertion(+)
$ echo "this is C" >> test.txt
$ git commit -a -m "this is C"
[master 328183e] this is C
 1 file changed, 1 insertion(+)

Давайте проверим это; ага, А потом Б, потом C:

$ git log
commit 328183e34767ed1bb06834e47d9bb3524e768546 (HEAD -> master)

    this is C

commit d55a780bcf1bda20ad7ceacce7c7c3777295fd59

    this is B

commit 14cfab017f3718bc7f3126e73aa187ec62b5d2a3

    this is A

Теперь я поражен сожалением. Если бы только B и C были в их собственной ветви mybranch, и я мог бы go вернуться к A на ведущем и продолжить работать. ОК:

$ git branch mybranch
$ git reset --hard 14cfab
HEAD is now at 14cfab0 this is A

Так что теперь mybranch находится на C (и сохраняет C и B с родителем A), но master на A, и я могу продолжать работать. Давай докажем это. Я добавлю D:

$ git status
On branch master
nothing to commit, working tree clean
$ echo "this is D" >> test.txt
$ git commit -a -m "this is D"
[master bf8a4d4] this is D
 1 file changed, 1 insertion(+)

А что у нас есть?

$ git log
commit bf8a4d478ce61a78de94619ffea1dc58d1c9a799 (HEAD -> master)

    this is D

commit 14cfab017f3718bc7f3126e73aa187ec62b5d2a3

    this is A

Итак, master состоит из A, а затем D. Как раз то, что мы хотели. Между тем, B и C все еще живы как mybranch:

$ git checkout mybranch
Switched to branch 'mybranch'
$ git log
commit 328183e34767ed1bb06834e47d9bb3524e768546 (HEAD -> mybranch)

    this is C

commit d55a780bcf1bda20ad7ceacce7c7c3777295fd59

    this is B

commit 14cfab017f3718bc7f3126e73aa187ec62b5d2a3

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