目录:
1、Git工作区、暂存区、分支的区别
2、Git版本回退和撤销修改
3、Git删除文件
4、vim说明
5、总结
参考资料:Git教程 - 廖雪峰的官方网站
1. Git工作区、暂存区、分支的区别
在每天吃一点Androidの二中,我们在电脑上创建了一个名为Git_Repo的文件夹,并在里面启动bash,通过
git init
初始化了一个空的版本库,git自动生成了一个隐藏的.git文件夹。
-
.git
文件夹就是版本库,里面存放了很多的东西。 -
Git_Repo就是工作区,我们在里面新建工程,或者新增文件,如
readme.md
; - 然后我们在bash中add添加后,工程或文件就被加入到了.git版本库中的stage暂存区;
- 继而再commit提交后,工程或者文件就被提交到了master分支。
2. Git版本回退和撤销修改
2.1. 版本回退
查看版本日志:
git log
查看简化的版本日志:
git log --pretty=oneline
如上图,黄色一长串“bbcd...b070”是commit id,也就是版本号,使用SHA1计算出来的id,这个id在版本回退中扮演很重要的角色。后面的白色字符串,如"rm readme2.md"是版本修改说明。
回退到上个版本:
git reset --hard HEAD^
回退到上上个版本:
git reset --hard HEAD^^
回退到十个版本:
git reset --hard HEAD~10
回退到指定版本号的版本:如版本号开头部分为bbcd...
git reset --hard HEAD bbcd
另一个版本日志的查看方式:
git reflog
2.2. 撤销修改
- 撤销工作区的修改:
git checkout -- file
如果暂存区有内容,那么工作区撤销成与暂存区一样。
如果暂存区没有内容,那么工作区撤销成与分支一样。
- 撤销暂存区的修改
git reset HEAD file
撤销后,暂存区的内容与分支一样
<a>注意:</a>修改工作区的readme.md,add添加工作区内容到暂存区,但未commit提交,再次修改工作区的readme.md内容,不add添加到暂存区,也就是说现在工作区、暂存区、分支三个位置的readme.md都不同,此时commit提交,提交的内容是暂存区的,而工作区第二次修改的readme.md是没有提交上去的。
3. Git删除文件
删除工作区的文件:
rm readme2.md
分两步:一:git rm删除,二:git commit提交
git rm readme2.md
git commit
撤销删除:
git checkout --readme2.md
查看文件内容:
cat filename
4. vim说明
vim分为编辑模式和命令模式两种。
命令行模式下的命令:
dd
:删除行
i
或a
或o
:进入编辑模式
数字n+d
:删除当前行开始n行
u
:回退
p
:d
删除后,可以用p
粘贴进入命令模式:
esc
5. 总结
区别好工作区、暂存区和分支
- 情景1:添加并且提交了一个改错了的文件到分支,要回退到某个历史版本。
#查询分支的各个历史提交的版本,根据版本描述确定要撤回到的版本
git log --pretty=oneline
#或者用这个指令,HEAD前面的一串就是版本号
git log reflog
#根据版本号输入版本回退指令,版本号可以不用写完整
git reset --hard HEAD 版本号
- 情景2:添加了一个改错了的文件到暂存区,但还没有提交到分支
# 将暂存区的文件替换成分支里的文件
git reset HEAD file
- 情景3:修改错了工作区的文件,要取消修改
git checkout -- filename
- 情景4:删除分支的文件
git rm filename
git commit