前言
前面已经写了一部分,下面接着来。
直接打开之前的工作空间,执行:
1.工作区和缓存区。新建一个文件b.rtf放入上一章的gitlearn目录下,gitlearn就相当于工作区。执行:
这时提示b.rtf从未被添加过。
执行:
$ git add b.rtf
这时b.rtf会从工作区加入暂存区。执行:
$ git commit -m "xxx"
一次性把暂存区所有的修改提交到分支。
2.管理修改。
git管理的不是文件,而是修改,每次修改后需要 add 再 commit ,如果没有add ,直接commit ,则该修改没有提交。
第一次修改->
git add
->第二次修改->git add
->git commit
。或者
第一次修改->第二次修改->git add
->git commit
3.撤销工作区或暂存区修改。
$git checkout -- b.rtf
回退到最近一次修改前的状态。
4.撤销暂存区的修改。
$ git reset HEAD file
如果从暂存区提交到了版本库,就用上一节的版本回退。
小结
git checkout -- file
丢弃工作区的修改
git reset HEAD file
丢弃暂存区的修改
如果提交到了版本库,就进行版本回退
5.一般情况直接在目录里删掉或者执行:
$ rm b.rtf
这时候git知道你删除了文件,因此工作区和版本库就不一致了,git status命令会告诉你哪些文件被删除了。
* 如果确实要删除该文件,执行:
$ git rm b.rtf
* 如果是误删的文件,因为版本库中还有,执行:
$ git checkout -- b.rtf
与撤销修改一致
小结
$ git rm b.rtf 删除文件
$ git checkout -- file 撤销删除
6.删除git仓库中的文件,但保留工作区的。
我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆 .a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:
$ git rm --cached b.rtf
7.修改文件名称
如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作,要执行:
$ git mv 文件名 文件名
小结
$ git rm --cached b.rtf 删除git仓库中的文件,但保留 工作区的
$ git mv 文件名 文件名 修改文件名称附加:
$ git log -p -2 查看最近2次的历史记录
$ git log --stat 查看简要的增改行数统计
$ git log --pretty=oneline 将每个提交放在一行显示
$ git log --pretty=format:"%h -%an, %ar : %s" 自定义显示格式
列出常用的格式占位符写法及其代表的意义