点击回顾git用法
前言
接 适合前端初学者的git实操总结–windows系统git教程(一)和 适合前端初学者的git实操总结–windows系统git教程(二),继续往下更新
六、如何撤销修改,撤销修改与版本回退的区别
假如你在readme.txt中又添加了一行:
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN. // 新添加的
但其实这一行并不需要,那么我们可以删掉最后一行,手动把文件恢复到上一个版本的状态。
但如果你已经git add 到暂存区了,这时我们再git status 查看 可以看到,修改只是添加到了暂存区,还没有提交:
git restore --staged 可以把暂存区的修改撤销掉,重新放回工作区: 再用git status查看一下,现在暂存区是干净的,工作区有修改:
现在,假设我们不但改错了东西,还从暂存区提交到了版本库,怎么办呢? 虽然版本回退还可以回退到上一个版本。不过,这是有条件的,就是我们还没有把自己的本地版本库推送到远程。【远程版本库我们马上会学习到】
情况1:在工作区做了修改,并未添加到暂存区,想撤销工作区的修改,用 git restore file; 情况2:在工作区做了修改,并用git add 添加到了暂存区,未提交;想撤销,分两步, 1.先撤销暂存区的修改,用 git restore --staged file, 2.参考情况1撤销工作区的修改,用 git restore file;
情况3:在工作区做了修改,且git add git commit添加并提交了内容,想撤销本次提交,直接用 git reset --hard HEAD^回退版本,即可保证工作区,暂存区,版本库都是上次的内容,不过前提是没有推送到远程库。
请注意: 我们在很多博客看到的上述操作分别是git checkout 以及 git reset HEAD ,这是因为git官方做了修改,原来的git checkout 可以使用 git restore 代替,原来的 git reset HEAD可以使用 git restore --staged 代替,最新版的git提示都已经更换成了restore
七、删除及删除的注意事项
在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交:↓
一般情况下,我们通常直接在文件管理器中把没用的文件删了,或者用git rm命令删了:↓
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:↓
现在我们两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:文件就从版本库中被删除了。
tips: 先手动删除文件,然后使用git rm 和git add效果是一样的。 从来没有被添加到版本库就被删除的文件,是无法恢复的!
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:git reset --hard “HEAD^”
小结: 命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
总结
如有错误欢迎评论指正,一起愉快学习git~
|