-
1.未add,未commit
在上一篇中我们修改了myTeam.txt,未commit,正在就要commit 时突然发现末尾处多了一个bu健康的网址,估计是不小心copy进来了。,好在及时发现了。手动删除后用git status 看下状态。
git status
status.png
从图中发现git 告诉我们我们还可以用下面的命令来撤销工作区的修改。
git checkout -- <file>...
撤销工作区的修改包括这几种情况:
1.myTeam.txt修改后未放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
2.myTeam.txt修改后已放到暂存区后,且又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
PS:git checkout -- file 命令中的-- 很重要,没有-- ,就变成了“切 换到另一个分支”的命令,关于分支我们后面再讲。
git checkout -- myTeam.txt
文件内容果然恢复了原貌。
-
2.已add,未commit
继续修改myTeam.txt, 已git add 后准备commit ,结果又发现在末尾处有个bu健康的网址。
http://www.***1024.cc
惨了,赶紧git status 看下
status2.png
上图中Git同样告诉我们,用命令git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区,再用git status 查看一下
git reset HEAD myTeam.txt
git status
reset.png
现在暂存区是干净的,工作区有修改,还记得怎么丢弃工作区的修改吗?
git checkout -- myTeam.txt
git status
checkout.png
一切都OK了。
- 总结
-
1.修改后 未add(添加到暂存区) 需要撤销修改时:
a.git checkout -- myfile.txt 或 手动删除工作区修改
b.工作区 : clean 暂存区: clean -
2.修改后 add了(未commit) 再次修改文件 要撤销第二次修改时:
a.git checkout -- myfile.txt (将暂存区恢复到工作区)
b.暂存区有第一次的修改需要commit -
3.修改后 add了(未commit),需要撤销修改时:
a.git reset HEAD myfile.txt (将暂存区修改删除)
b.此时工作区的修改还未撤销,git checkout -- myfile.txt (撤销工作区修改) -
4.修改后 add并commit了,需要撤销修改时:
a.git reset --hard HEAD^ (版本回退)
_本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 ) _
转载自【宝宝巴士SuperDo团队】原文链接: http://www.jianshu.com/p/fd635b8a65b8