git简介
git是什么
Git是一个分布式管理控制系统,用于记录文件的修改历史
为什么要用Git
版本管理:方便随时进行修改和回退
团队协作:减少多人开发产生的冲突
功能分支:新功能可以新建分支,开发完后合并回来,互不影响
Git基本流程是怎样的
分支使用策略
| 分支 | 作用 |
|---|---|
| master | 随时可上线的分支 |
| develop | 从master创建的分支,一般作为开发部门的主要开发分支,阶段开发完成后,需要合并到master分支上 |
| feature | 从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完 成后合并到develop分支 |
| hotfix | 从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、 develop分支 |
实际开发流程
- 入职第一天,管理人员分配/git账号密码
- 开发人员下载代码文档,根据文档搭建环境
- 接到第一个功能需求,创建feature分支
- 根据开发需求,进行本地测试
- 提交代码到当前需求对应的feature分支
- 合并分支至test分支,测试人员会在test分支中测试
- 测试人员测试bug ,开发者在feature分支上继续修、提交
- 测试人员测试通过 ,test分支会被测试人员合并到develop开发分支,再次测试
- develop分支最终会被合并到master主分支
git与svn的区别
| 特性 | Git | SVN |
|---|---|---|
| 核心架构 | 分布式 | 集中式 |
| 仓库存储 | 每个开发者的本地都有一个完整的仓库,包含全部历史记录。 | 只有一个中央仓库,存储在服务器上。 |
| 网络依赖 | 不需要。大部分操作(如提交、查看历史、创建分支)在本地完成,可离线工作。 | 强烈需要。几乎所有操作都需要与中央服务器通信。 |
| 操作速度 | 本地操作极其快速,因为不涉及网络延迟。 | 受网络速度和服务器性能影响,相对较慢。 |
| 分支模型 | 轻量级分支。创建、切换、合并分支非常快速和廉价,鼓励工作流中使用分支。 | 重量级分支。分支实质上是仓库的一个副本,创建和合并较慢、较复杂,通常避免频繁使用。 |
| 内容存储 | 元数据方式。对文件内容做哈希,生成快照。相同内容只存储一次,非常高效。 | 文件方式。存储每个文件的不同版本,默认存储前后版本的差异。 |
| 权限管理 | 相对简单,通常依赖操作系统或仓库托管平台(如GitHub)的权限。 | 非常精细。可以在目录和文件级别进行严格的读写权限控制,适合企业级管理。 |
| 学习曲线 | 概念较多(工作区、暂存区、本地库、远程库),初学者上手有一定难度。 | 概念相对简单(检出、更新、提交),易于初学者理解。 |
| 典型工作流 | 每个开发者拥有完整的代码库,可以独立工作,然后通过推送和拉取来协作。 | 开发者从中央服务器检出代码,工作后提交回中央服务器。 |
git pull与git fetch的区别
git fetch只下载,git pull下载并合并,git pull = git fetch + git merge
| 特性 | git fetch | git pull |
|---|---|---|
| 工作方式 | 只下载远程数据到本地 | 下载 + 自动合并 |
| 影响范围 | 不影响工作区和当前分支 | 修改工作区和当前分支 |
| 安全性 | 高 - 可先审查更改 | 中 - 可能直接引入冲突 |
| 控制性 | 完全控制合并时机和方式 | 自动合并,控制较少 |
| 使用场景 | 协作环境、审查更改前 | 个人分支、确定要更新时 |
git merge与git rebase的区别
git merge = 保留历史,创建合并提交
git rebase = 重写历史,创建线性提交
| 特性 | git merge | git rebase |
|---|---|---|
| 历史记录 | 保留分支结构,显示合并点 | 线性历史,隐藏分支 |
| 提交哈希 | 不改变现有提交 | 创建新的提交(哈希改变) |
| 冲突处理 | 一次性解决所有冲突 | 可能需要在每个提交处解决冲突 |
| 安全性 | 安全,不重写历史 | 危险,重写历史 |
| 使用场景 | 公共分支、发布分支 | 本地特性分支整理 |
二、安装git
首先进入官网下载git,https://git-scm.com/download,点击install跳转到下载页

选择合适的版本下载,例如:Git for Windows/x64 Setup

查看安装版本
plain
git --version初始化
plain
git init配置新用户信息
安装成功后,需要先配置用户名和邮箱
假如我想创建一个名为djm,邮箱为1415847612@qq.com的用户
plain
git config --global user.name "djm"
git config --global user.name
git config --global user.email "1415847612@qq.com"
git config --global user.email三、git操作
git一图流
创建新分支
创建新分支的本质是从当前分支克隆出一个分支出来
假设当前分支为main分支,需要新建的分支为dev
plain
//已在当前分支
git switch -c dev
//不在当前分支
git checkout main
git switch -c dev
//推送远程
git push -u origin dev新文件提交
进行一次本地提交
plain
git add .
git commit -m "提交注释"进行一次远程提交
plain
git add .
git commit -m "提交注释"
git push回滚错误提交
| 方法 | 适用场景 | 是否改变历史 | 风险等级 |
|---|---|---|---|
| git revert | 已推送的提交、公共分支 | 否(创建新提交) | 低 |
| git reset | 本地提交、未推送的更改 | 是(重写历史) | 中 |
| git checkout | 临时恢复文件 | 否 | 低 |
暂存并切换分支
回滚到某一时刻
变基撤回
plain
git rebase --aborb将多次提交合并成一次提交
同步远程分支
plain
git pull合并分支
现在有两条分支,main分支落后,dev分支更新,需要合并两个分支
plain
git checkout main
git pull
git merge dev
git add .
git commit -m "合并dev分支到main分支"
git push删除当前分支和远程分支
假设当前需要删除的分支为main分支
plain
//删除本地分支
git brach -D main
//删除远程分支
git push origin --delete main查看日志
plain
git log --pretty=oneline --all --graph --abbrev-commit查询分支
plain
git branch追踪过的文件添加到.gitignore文件
三、远程仓库操作
创建远程仓库
注册码云-->新建仓库-->配置SSH公钥-->远程仓库添加公钥-->查看连接状态 -->注册码云

新建仓库


配置SSH公钥
plain
ssh-keygen -t rsa //生成SSH公钥
cat ~/.ssh/id_rsa.pub //获取公钥
ssh -T git@gitee.com //验证是否配置成功



四、git报错修改
报错修改
plain
//Windows系统下在提交代码时自动将LF转换为CRLF
git config --global core.autocrlf true
//Linux/macOS系统下在提交代码时自动将CRLF转换为LF
git config --global core.autocrlf input