1. git的三个分区
- git 的文件存储?
- 三个对象:blob,tree,commit。
- 查看.git/objects文件类型和内容的命令:
- git cat-file -p 5d30
- git cat-file -t 5d30
- commit id的含义。
- HEAD, branch 名称的本质。
- 工作区
- 暂存区
- 版本库
2. 文件的状态

untracked: 第一次add的文件。
Modified: 被commit过,再被编辑。
staged: 文件经过add操作后的状态。
unmodified: staged的文件被commit之后。
3. 可视化理解
https://learngitbranching.js.org/?NODEMO=&locale=zh_CNlearngitbranching.js.org- 可视化理解所有的commit组成的拓扑结构。
- 无分支的情况。
- 有分支的情况。
5. 常用的git命令
5.1 回退
- git log: 查看提交记录
- git reflog: 查看所有提交记录
- git reset: 回退命令。
- git reset --hard
- git reset --mixed
- git reset --soft
- 撤销修改:
- 删除文件
5.2 远程仓库
- 关联远程仓库的步骤:
- gitlab上建立新建一个仓库
- git clone
- 本地项目文件同步到远程仓库。
- gitlab上建立新建一个仓库
- git push origin 本地分支名:远程分支名9
- git push origin master:master
- git push origin master:dev
- 将本地的 master分支推送的远程的master分支。
- 可以缩写为:git push origin master
- git pull origin 远程分支名称:本地分支名称。(看命令动画)
- git pull origin master:master
- git pull origin master:dev
- 从origin仓库拉取master分支的数据。
- 可以缩写为:git pull origin master
- git fetch origin 分支名:(看命令动画)
- git fetch origin master
5.3 分支管理
- 什么时候用分支?修复bug或者开发新功能的时候。
- Bug分支。
- feature分支。
- 多人协作
- 创建与合并分支。
- git branch iss01
- 切换分支
- git checkout iss01
- 解决冲突。(看命令动画)
- git merge dev
5.4 标签管理
- 给某个commit id起一个好理解的名字。比如软件的版本号。v1.0,v2.0。
- 命令:
- 新建标签:git tag -a v1.4 -m "my version 1.4"
- 查看标签:git tag
- 模糊查找:git tag -l "v1.8.5*"
- 查看摸个标签的内容:
git checkout
- 在某个标签上重新开发:
- 新建分支。
- git reset --hard tag_name