乐趣区

关于git:Git的基础概念及使用

Git 的根底概念

  1. 什么是 Git
    Git 是一个 开源的分布式版本控制系统 ,是目前世界上 最先进 最风行 的版本控制系统。能够疾速高效地解决从很小到十分大的我的项目版本治理。
    特点 :我的项目越大越简单,协同开发者越多,越能体现出 Git 的 高性能 高可用性
  2. Git 的个性
    Git之所以疾速和高效,次要依赖于它的如下两个个性:

    ① 间接记录快照,而非差别比拟
    
    ② 近乎所有操作都是本地执行
  3. SVN 的差别比拟
    传统的版本控制系统(例如 SVN)是 基于差别 的版本控制,它们存储的是 一组根本文件 每个文件随工夫逐渐累积的差别
    SVN 的益处 节俭磁盘空间
    SVN 毛病 耗时、效率低在每次切换版本的时候,都须要在根本文件的根底上,利用每个差别,从而生成指标版本对应的文件
  4. Git 的记录快照
    Git 快照 是在原有文件版本的根底上从新生成一份新的文件,相似于备份 。为了效率,如果文件没有批改,Git 不再从新存储该文件,而是只保留一个链接指向之前存储的文件。
    Git 快照毛病 占用磁盘空间较大
    Git 快照长处 版本切换时十分快,因为每个版本都是残缺的文件快照,切换版本时间接复原指标版本的快照即可。
    特点 空间换工夫,近乎所有的操作都只需拜访本地文件和资源个别不须要来自网上 其余计算机的信息
    个性

    • 断网后仍旧能够在本地对我的项目进行版本治理
    • 联网后,把本地批改的记录同步到云端服务器即可
  5. Git 中的三个区域
    应用 Git 治理的我的项目,领有三个区域,别离是 工作区 暂存区Git 仓库
  6. Git 中的三种状态

    • 已批改 modified
      示意批改了文件,但还没将批改的后果放到 暂存区
    • 已暂存 staged
      示意对已批改文件的以后版本做了标记,使之蕴含在 下次提交的列表中
    • 已提交 committed
      示意文件曾经平安地保留在本地的 Git 仓库中
      留神:

      • 工作区的文件被批改了,但还没有放到暂存区,就是 已批改 状态。
      • 如果文件已批改并放入暂存区,就属于 已暂存 状态。
      • 如果 Git 仓库中 保留着特定版本 的文件,就属于 已提交 状态。
  7. 根本的 Git 工作流程如下

       ① 在工作区中批改文件
    
       ② 将你想要下次提交的更改进行暂存
    
       ③ 提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库
  8. Git根底
    装置并配置 Git 点击下载相干的 Git 版本
  9. 配置用户信息
    装置完 Git 之后,要做的第一件事就是设置本人的 用户名 邮件地址。因为通过 Git 对我的项目进行版本治理的时候,Git 须要应用这些根本信息,来记录是谁对我的项目进行了操作:

    git config --global user.name "yourname"
    git config --global user.email "yourname@qq.com"

    留神 如果应用了 –global 选项,那么该命令只须要运行一次,即可永恒失效。

  10. 查看配置信息
    按如此终端命令,疾速的查看 Git 的全局配置信息:

    # 查看所有的全局配置项
    git config --list --global
    # 查看指定的全局配置项
    git config user.name
    git config user.email
  11. 获取帮忙信息

    # 想要获取 git config 命令的疾速参考
    git config -h
  12. 获取 Git 仓库的两种形式
    ① 将尚未进行版本控制的本地目录 转换 Git 仓库
    ​ ② 从其它服务器 克隆 一个已存在的 Git 仓库
    以上两种形式都可能在本人的电脑上失去一个可用的 Git 仓库
  13. 在现有目录中初始化仓库
    1. 在我的项目文件所在目录下关上终端
    2. 执行 git init 命令初始化文件(会生成.git 暗藏文件夹 本机是看不到的)
    3. 工作区中的文件的 4 种状态,这四种状态共分为两大类(被 Git 治理和未跟踪两种)
  14. 移除文件
    从 Git 仓库中移除文件的形式有两种:

    • 从 Git 仓库和工作区中 同时移除 对应的文件
    • 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件
    # 从 Git 仓库和工作区中同时移除 图书治理.js 文件
    git rm -f index.js
    # 只从 Git 仓库中移除 index.css,但保留工作区中的 图书治理.css 文件
    git rm --cached 图书治理.css
  15. 疏忽文件

    • 个别咱们总会有些文件无需纳入 Git 的治理,也不心愿它们总呈现在未跟踪文件列表。在这种状况下,咱们能够创立一个名为 .gitignore 的配置文件,列出要疏忽的文件的匹配模式。
    • 文件 .gitignore 的格局标准如下:

      ① 以 **# 结尾 ** 的是正文
      
      ② 以 **/ 结尾 ** 的是目录
      
      ③ 以 **/ 结尾 ** 避免递归
      
      ④ 以 **! 结尾 ** 示意取反
      
      ⑤ 能够应用 **glob 模式 ** 进行文件和文件夹的匹配(glob 指简化了的正则表达式)
    • 星号 * 匹配 零个或多个任意字符
    • [abc] 匹配 任何一个列在方括号中的字符(此案例匹配一个 a 或匹配一个 b 或匹配一个 c)
    • 问号 ? 只匹配 一个任意字符
    • 两个星号 ** 示意匹配 任意两头目录(比方 a/**/z 能够匹配 a/z、a/b/z 或 a/b/c/z 等)
    • 在方括号中应用 短划线 分隔两个字符,示意所有在这两个字符范畴内的都能够匹配(比方 [0-9] 示意匹配所有 0 到 9 的数字)
  16. .gitignore 文件的例子

    # 疏忽所有的.a 文件
    *.a
    # 即便后面疏忽了 .a 文件 但跟踪所有的 lib.a!lib.a
    # 只疏忽当前目录下的 TODO 文件 而不疏忽 subdir/TODO
    /TODO
    #疏忽任何目录下的名为 bulid 的文件夹
    bulid/
    #疏忽 doc/notes.txt 但不疏忽 doc/server/arr.txt
    doc/*.txt
    # 疏忽 doc/ 目录及其所有子目录的 .pdf 文件
    doc/**/*.pdf
  17. 查看提交的历史

    # 按工夫先后顺序列出所有的提交历史,最近的提交在最下面
    git log
    
    # 只展现最新的两条提交历史,数字能够按需进行填写
    git log -2
    
    # 在一行上展现最近两条提交历史的信息
    git log -2 --pretty=oneline
    
    # 在一行上展现最近两条提交历史信息,并自定义输入的格局
    # &h 提交的简写哈希值  %an 作者名字  %ar 作者订正日志  %s 提交阐明
    git log -2 --pretty=format:"%h | %an | %ar | %s"
  18. 回退到指定的版本

    # 在一行上展现所有的提交历史
    git log --pretty=oneline
    
    # 应用 git reset --hard 命令,依据指定的提交 ID 回退到指定版本
    git reset --hard <CommitID>
    
    # 在旧版本中应用 git reflog --pretty=oneline 命令,查看命令操作的历史
    git reflog --pretty=oneline
    
    # 再次依据最新的提交 ID,跳转到最新的版本
    git reset --hard <CommitID>
退出移动版