Reset
Fundamentals
git 可以在不同版本之间切换; 仓库里面的文件会因此改变(电脑里面的也会。。。)
git reset --hard HEAD^ 返回上一次
git reset --hard <地址> // 比如 3af8a6
常用命令
git reset [<mode>] [<commit>]
mode 说明参考官网。
commit
可以是 commit id 或者 HEAD
, HEAD^
(HEAD 前一次 commit) , HEAD~2
(HEAD 前两次 commit) …
应用场景
Commit 提交后想要更改
Commit 之后发现 Commit 内容有误,想要更改文件。如果不想再 Commit 一次,可以使用 Reset 回溯之前的版本。
git commit ...
git reset --soft HEAD^ (1)
edit (2)
git commit -a -c ORIG_HEAD (3)
(1) 中 reset
后将之前的 commit 保存在 .git/ORIG_HEAD
中。(3) 中再次提交时选择该 Commit 。参数 -c
代表更改 commit message
;-C
则不更改直接提交。
创建开发分支并回退主分支
就是意识到当前分支不适合作为主分支,想要回退到之前分支并保留当前分支为开发分支(dev
)
git branch dev (1)
git reset --hard HEAD~3 (2)
git switch dev (3)
(1) 中创建新分支。(2) 中回退当前分支至之前。(3) 中切换为新分支。