我目前图床是搭建在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

本地库和远程库

  1. 团队内部协作

  2. 跨团队协作


本地库初始化

命令: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

通常实际开发时设置一个系统用户级别的签名就够了,不用再设置个项目级别的。

  • 级别优先级
    • 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名。
    • 如果只有系统用户级别的签名,就以系统用户级别的签名为准。
    • 二者都没有的情况不存在,会报错。