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
- 分支管理
- 定期合并已经成功验证的分支,及时删除已经合并的分支
- 保持合适的分支数量
- 为分支设置合适的管理权限