VS Code Git:恢复到特定提交

ste*_*wpf 4 git visual-studio-code

我正在使用 VS Code,想要返回到特定的提交 A。我目前位于 C:

A -> B -> C
Run Code Online (Sandbox Code Playgroud)

我上次提交的是 C,现在我想将所有文件设置回提交 A 时的状态。如何在 VS Code 中执行此操作?(如果需要的话,在 VS Code 中使用命令行也可以)-

mat*_*att 9

那么您希望 B 和 C 位于二级分支上吗?现在创建一个新分支(头位于C)以保留B和C,但不要\xe2\x80\x99t检查它;留在主人或其他什么东西上。现在git reset --hard A

\n\n

例子

\n\n

我将在 master 上制作 A,然后制作 B,然后制作 C:

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

让我们检查一下;是的,A 然后 B 然后 C:

\n\n
$ git log\ncommit 328183e34767ed1bb06834e47d9bb3524e768546 (HEAD -> master)\n\n    this is C\n\ncommit d55a780bcf1bda20ad7ceacce7c7c3777295fd59\n\n    this is B\n\ncommit 14cfab017f3718bc7f3126e73aa187ec62b5d2a3\n\n    this is A\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我感到后悔了。如果 B 和 C 都在自己的分支上mybranch,我就可以回到 master 上的 A 并继续工作。好的:

\n\n
$ git branch mybranch\n$ git reset --hard 14cfab\nHEAD is now at 14cfab0 this is A\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以现在mybranch在 C(并保留 C 和 B 与父级 A),但master在 A,我可以继续工作。让我们证明一下。我将添加 D:

\n\n
$ git status\nOn branch master\nnothing to commit, working tree clean\n$ echo "this is D" >> test.txt\n$ git commit -a -m "this is D"\n[master bf8a4d4] this is D\n 1 file changed, 1 insertion(+)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我们得到了什么?

\n\n
$ git log\ncommit bf8a4d478ce61a78de94619ffea1dc58d1c9a799 (HEAD -> master)\n\n    this is D\n\ncommit 14cfab017f3718bc7f3126e73aa187ec62b5d2a3\n\n    this is A\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以master由 A 组成,然后是 D。正是我们想要的。与此同时,B 和 C 仍然活着mybranch

\n\n
$ git checkout mybranch\nSwitched to branch \'mybranch\'\n$ git log\ncommit 328183e34767ed1bb06834e47d9bb3524e768546 (HEAD -> mybranch)\n\n    this is C\n\ncommit d55a780bcf1bda20ad7ceacce7c7c3777295fd59\n\n    this is B\n\ncommit 14cfab017f3718bc7f3126e73aa187ec62b5d2a3\n\n    this is A\n
Run Code Online (Sandbox Code Playgroud)\n