我目前图床是搭建在github上,用了一段时间的PicGo,但是发现PicGo上传图片很方便,想修改已上传的文件的名称、整理图片就不行了。
所以用git来管理图床更方便些,就这个原因来学一遍git。
一些比较权威的git文档:
大致搞懂这几个文档就够用了,不过对于我这个小白,直接看文档入门有点耗神,所以我选择跟着Git&Github_尚硅谷_bilibili过一遍。
课程大纲
版本控制的功能
- 协同修改
- 多人并行不悖地修改服务器端的同一个文件。
- 数据备份
- 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
- 版本管理
- 在保存每一个版本的文件信息的同时做到不保存重复数据,以节约存储空间、提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的方式。
- 权限控制
- 对团队中参与开发的人员进行权限控制。
- 对团队外开发者贡献的代码进行审核——Git独有。
- 历史记录
- 查看修改人、修改时间、修改内容、日志信息。
- 将本地文件恢复到某一个历史状态。
- 分支管理
- 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
版本控制简介
版本控制是一种思想,git等是实现版本控制的工具。
集中式版本控制(工具有cvs、svn、vss等):
这种方式的缺点是单点故障,服务器一旦挂了,就都没了。
分布式版本控制(工具有Git等):
Git简史
Git的logo、优势
logo
这个图片就表达了“分支”这个意思。
优势:
- 大部分操作在本地完成,不需要联网。
- 完整性保证。对每一次提交进行hash操作,通过比较hash值是否相同就知道了项目是否完整。
- 尽可能添加数据而不是删除或修改数据。删除往往就找不回来了,所以每提交一次,版本都会增加1个,随时有后悔药可吃。
- 分支操作非常快捷流畅。
- 与Linux命令全面兼容,毕竟git和linux都是林纳斯(Linus)开发的。
Git的安装
Git官网
下载慢的话可以去一些镜像网站
比如阿里云:https://developer.aliyun.com/mirror/
Git的结构
Git的代码托管中心
代码托管中心的任务:维护远程库。
- 局域网环境下:GitLab服务器
- 外网环境下:Github、Gitee
本地库和远程库
团队内部协作
跨团队协作
本地库初始化
命令:git init
这样就会生成一个“.git”文件夹,其内容为:
这里存放的是本地库相关的子目录和文件,不要删除,也不要轻易修改。
签名
形式
用户名:tom
Email地址:goodMorning@atguigu.com
用户名(tom)和Email地址的用户名(goodMorning)不一定一致,甚至Email地址可以省略。
作用
区分不同开发人员的身份。
辨析
这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
设置签名的命令
项目级别(仓库级别):仅在当前本地库范围内有效。
命令:git config user.name 用户名
git config user.email Email地址
信息保存位置:./.git/config
系统用户级别:登录当前操作系统的用户范围。
命令:git config --global user.name 用户名
git config --global user.email Email地址
信息保存位置:~/.gitconfig
通常实际开发时设置一个系统用户级别的签名就够了,不用再设置个项目级别的。
- 级别优先级
- 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名。
- 如果只有系统用户级别的签名,就以系统用户级别的签名为准。
- 二者都没有的情况不存在,会报错。