用户登录

国庆活动:订阅年付会员送 6 个月,重订、续订送 12 个月。订阅 →

默认情况下,每一次提交以后,头部指针都会指向最后这次提交,使用 git reset ,我们可以控制这个指针的位置,比如我们让它指向之前的某次提交,这样,下面再提交的时候,会覆盖掉之后的所有的提交。

git reset 有几个选项,--soft ,软重置,使用这个选项重置提交,不会影响到工作目录还有暂存区里的东西。 另外还有一个 --hard 选项,它会把工作目录还有暂存区,直接重置到指定的提交状态。默认是 --mixed ... 使用这个选项会把暂存区里的东西重置到指定提交 的状态,并且会把指针指向这个提交。

--soft

这个视频我们先来看一下 --soft 类型的重置。 git log 查看一下提交的日志 ...

比如我们要从 添加了 modernizer 这个提交往后开始覆盖 ... 先复制一下这几个提交的日志 ...

粘贴到一个文件里面 ... 如果你用的是 brackets 编辑器 ... 可以在工作区这里新建一个临时的文件 ...

然后复制 添加了 modernizer 这个提交的 ID ....

回到终端 ... 输入 git reset 后面加上 soft 选项 ... 然后是要定位的提交的 ID ...

git reset --soft xxx ...

现在,指针会指向 xxx 这个 ID 上。用 git log 看一下 ...

这里显示最近一次提交就是这个 添加了 modernizer ... 然后我们用 git status 再看一下状态 ...

删除了 semantic-ui.css 还有修改了 index.html 这两个修改都已经在暂存区里面了 ... 提交以后就会覆盖掉刚刚的 恢复 semantic ui 这个提交了 ..

--mixed

我们再看一下 mixed 这个选项 ... 向上 ... 把 --soft 换成 --mixed ... git reset 命令默认就是这个选项 ... 所以, 你也可以不用指定这个选项 ...

回车 ... 再用 git status 查看一下 ... 暂存区里的东西不见了 ... 我们需要使用 git add 或者 git rm 重新把修改添加到暂存区 ... 然后再去提交 ...

--hard

最后,我们再看一下 --hard 选项。把 --mixed 修改成 --hard ... 回车 ... git status ... 提示干净的工作目录 ... 说明已经重置了 暂存区 ... 再打开项目 ...

你会发现,删除掉的 css 目录,还有 index.html 里面链接 semantic ui 的代码,已经恢复过来了 ... 也就是当前的状态,工作目录还有暂存区的状态,已经恢复到了 添加了 modernizer 这个提交以后的状态 ...

这个时候,我们仍然可以重置到 Revert "添加了 semantic ui 框架" 这个提交 ...

复制一下这个提交的 ID ...

git reset --hard xxx

回车 ... 打开项目 ... 你会看到 css 目录已经不在了 ... index.html 里面链接 semantic 框架样式的代码也不见了 ...

说明现在,又重置到了 Revert "添加了 semantic ui 框架" 这个提交之后的状态了。

重置提交 - 控制头部指针 - git reset《 Git:版本控制 》

统计

11228
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点