type
status
date
slug
summary
tags
category
icon
password
@ZZHow(ZZHow1024)
参考课程:
【【GeekHour】一小时Git教程】
简介
- 什么是 Git
 - Git 是一个分布式版本控制软件
 - 最初由林纳斯·托瓦兹创作
 - 于 2005 年以 GPL 许可协议发布
 
- Git 特点
 - 免费
 - 开源
 - 分布式
 
- 版本控制系统分类
 - 集中式
 - 所有文件都保存在 Server 端,Client 端只保存副本
 - 代表:SVN
 - 分布式
 - 每个 Client 端都有一个完整的版本库
 - 代表:Git
 
安装与配置
- 下载地址
 
- 使用方式
 - 命令行
 - macOS/Linux
 - 直接在终端中使用
 - Windows
 - 鼠标右键单击 — Git Bash Here — 在启动的 Bash 中使用
 - 图形化界面(GUI)
 - 代表:GitHub Desktop
 - IDE 插件/扩展
 
- 配置
 - 提示
 - 省略(Local):本地配置,只对本地仓库生效
 - --global:全局配置,所有仓库生效(常用)
 - --system:系统配置,对所有用户生效(一般不用)
 
创建仓库(Repository)
- 创建方式
 - git init
 - 在本地创建一个空仓库
 - git clone
 - 从远程服务器克隆一个已经存在的仓库
 
- 提示
 - 创建 Git 仓库会生成一个隐藏的 .git 文件夹
 - 删除 .git 文件后将破坏该仓库
 
工作区域和文件状态
- Git 的本地数据管理区域
 - 工作区(Working Directory)
 - 在资源管理器中看到的文件夹就是工作区
 - 暂存区 / 索引(Staging Area / Index)
 - 是一种临时存储区域
 - 保存即将提交到 Git 仓库中的内容
 - 本地仓库(Local Repository)
 - 包含完整的项目历史和元数据
 
- Git 中的文件状态
 - 未跟踪(Untrained)
 - 未修改(Unmodified)
 - 已修改(Modified)
 - 已暂存(Staged)
 

添加和提交文件
回退版本(reset 命令)
- 三种模式
 git reset --soft- 保存工作区的内容
 - 保存暂存区的内容
 git reset --hard- 丢弃工作区的内容
 - 丢弃暂存区的内容
 git reset --mixed- 保存工作区的内容
 - 丢弃暂存区的内容
 
- 提示:若不指定模式,则默认为 mixed 模式
 
查看差异
- git dif 命令
 
从版本库中删除文件
- 方式一
 - 使用 
rm file命令从工作区删除文件 - 使用 
git add <file_name>命令暂存删除的内容 
- 方式二
 git rm命令
- 删除后要提交
 
.gitignore忽略文件
- 应该被忽略的文件
 - 系统或者软件自动生成的文件
 - 编译产生的中间文件和结果文件
 - 运行时生成日志文件、缓存文件和临时文件
 - 涉及身份、密码、口令、秘钥等敏感信息文件
 
- .gitignore文件中的规则对已经在仓库中的文件无效
 
- .gitignore文件的匹配规则
 - 从上到下逐行匹配,每一行表示一个忽略模式
 - Git官网匹配规则
 
- .gitignore文件的匹配规则
 - 使用标准的 Blob 模式匹配,例如:
 - 星号 * 通配任意个字符
 - 问号 ? 匹配单个字符
 - 中括号 [] 表示匹配列表中的单个字符,比如:[abd]表示a / b / c
 - 两个星号 ** 表示匹配任意的中间目录
 - 中括号可以使用短中线连接,比如:
 - [0-9] 表示任意一位数字,[a-z] 表示任意一位小写字母
 - 感叹号 ! 表示取反
 
- 示例
 
- .gitignore文件模版
 
SSH配置与远程仓库操作
- SSH配置
 - 本地操作
 - GitHub操作
 - 右上角头像 — Settings — SSH and GPG keys — New SSH Key
 - 输入 Title
 - 将公钥文件 xxx.pub 中的内容完全复制进 Key 中
 - 点击 Add SSH Key
 
- 远程仓库操作
 
关联本地仓库和远程仓库
- 将关联本地仓库和远程仓库
 
常用的GUI工具
Git分支基本操作
解决合并冲突
- 两个分支未修改同一个文件的同一处位置:Git 自动合并
 
- 两个分支修改了同一个文件的同一处位置:产生冲突
 - 解决冲突:
 
- 中止合并
git merge --abort 
回退和rebase
- 变基操作
 
- 合并与变基对比
 - merge
 - 优点:不会破坏原分支的提交历史,方便回溯和查看
 - 缺点:会产生额外的提交节点,分支图比较复杂
 - rebase
 - 优点:不会新增额外的提交记录,形成线性历史,比较直观和干净
 - 缺点:会改变提交历史,改变了当前分支 branch out 的节点 避免在共享分支使用
 
分支管理与工作流模型
- Git Flow模型
 

- GitHub Flow模型
 

- 版本号规则
 - 主版本(Major Version):主要的功 能变化或重大更新
 - 次版本(Minor Version):一些新的 功能、改进和更新,通常不会影响现 有功能
 - 修订版本(Patch Version):一些小 的 Bug 修复,安全漏洞补丁等。通常 不会更改现有功能和接口
 
- 分支命名(应使用带有意义的描述性名称来命名分支)
 - 版本发布分支/Tag 示例:v1.0.0
 - 功能分支示例:feature-login-page
 - 修复分支示例:hotfix-#issueid-desc
 
- 分支管理
 - 定期合并已经成功验证的分支,及时删除已经合并的分支
 - 保持合适的分支数量
 - 为分支设置合适的管理权限
 
