01|课程综述
版本管理的演变
- VCS出现前
- 用目录拷贝区别不同版本
- 公共文件容易被覆盖
- 成员沟通成本高,代码集成效率低下
- 集中式VCS——CVS/SVN
- 有集中的版本管理服务器
- 具备文件版本管理和分支管理能力
- 集成效率明显提高
- 客户端必须时刻和服务器相连
- 分布式VCS
- 服务端和客户端都有完整的版本库
- 脱离服务器,客户端照样可以管理版本
- 查看历史和版本比较等多种操作,都不需要访问服务器,比集中式VCS更能提高版本管理效率
Git的特点
- 最优的存储能力
- 非凡的性能
- 开源
- 容易备份
- 支持离线操作
- 容易定制工作流程
02|安装Git
Git 官方文档地址
macOS 平台 Git 下载地址
Windows 平台 Git 下载地址
Linux 平台 Git 下载地址
03|最小配置
配置user信息(user.name和uer.email)
git config --global user.name 'your_name'<br />git config --global user.email 'your_email@domain.com'
config的三个作用域
- 优先级:local>global>system
Test
04|创建仓库并配置local用户信息
05|工作区和缓存
git add:添加到暂存区
git add -u:将文件的修改、文件的删除,添加到暂存区。 只能操作跟踪过的文件
git add .:将文件的修改,文件的新建,添加到暂存区。
git add -A(git add -all):将文件的修改,文件的删除,文件的新建,文件的替换,添加到暂存区。
mv:文件重命名
cp:文件拷贝
cp filename destination_folder:拷贝文件
cp -r directory_name destination_folder:拷贝文件夹
06|文件重命名
git mv
07|git log 查看版本演变历史
git log
git log --all 查看所有分支的历史
git log --all --graph 查看图形化的 log 地址
git log --oneline 查看单行的简洁历史。
git log --oneline -n4 查看最近的四条简洁历史。
git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。
git help --web log 跳转到git log 的帮助文档网页
08|gitk图形界面工具查看版本历史
gitk
gitk 直接打开gitk图形界面
gitk filename 查看单个文件的修改历史
09|.git目录
.git 文件目录 • COMMIT_EDITMSG • config 当前 git 的配置文件 • description (仓库的描述信息文件) • HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop • hooks [文件夹] • index • info [文件夹] • logs [文件夹] • objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看) • ORIG_HEAD • refs [文件夹]
• heads (存放当前项目的所有分支,包含所有的分支文件,文件存储了分支指向的指纹信息) • tags (存放的当前项目的所有标签,又叫做里程碑,或者版本发布用等记录重要版本.文件也存储了tag的指纹信息)
git cat-file
- git cat-file -t 命令 , 查看 git 对象的类型
- git cat-file -p 命令, 查看 git 对象的内容
git cat-file -s 命令, 查看 git 对象的大小
cat
cat filename,功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
ls -al
ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
10|commit、tree、blob三个对象之间的关系
一个commit对应1个tree tree可以理解为一个文件夹
11|小练习:tree的个数
12|分离头指针情况下需要注意的问题
分离头指针(detached head):如果git给出该提示,说明正工作于没有分支的情况下
应用场景:在做尝试或者测试的时候可以分离头指针,当尝试完毕没有用的时候可以随时丢弃,但是如果觉得尝试有用,那么可以新建一个分支,使用 git branch <新分支的名称> commitId
git checkout commitId:会出现分离头指针的情况,这种情况下比较危险,因为这个时候你提交的代码没有和分支对应起来,当切换到其他分支的时候(比如master分支),容易丢失代码;
13|理解HEAD和branch
Git常见命令速查表
Git三剑客-Git常见命令速查表.pdf
github-git-cheat-sheet.pdf
git-cheat-sheet.pdf