b站地址
博客里面的截图来源于视频,该博客的文字来源于视频+ai+个人理解
版本控制
1.本地版本控制

适合个人用
2.集中版本控制
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS

3.分布式(git)
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史 ,可以离线在本地提交 ,只需在连网时push到相应的服务器或其他用户 那里。由于每个用户那里保存的都是所有的版本数据 ,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
每个人都有全部的代码;安全隐患

与SVN区别

聊聊Git历史

Git安装及环境配置
最新的淘宝镜像
|----------------------------------------------------------|---|
| npm config set registry https://registry.npmmirror.com | |
-
所有 npm install
-
所有安装包
-
所有更新
正确规则是:
✔ 镜像有的包 → 直接从镜像下
✔ 镜像没有 的包 → 直接报错,不会自动去官方源
但你完全不用担心!因为:
👉 淘宝镜像是 100% 全量同步官方 NPM 的
全世界所有 npm 包,它都有,实时同步
全部 自动走国内淘宝镜像 👉 速度快、稳定、不报错、不卡顿
取消镜像 = 切回官方 NPM 源
你只需要在终端输入这 一行命令:
npm config set registry https://registry.npmjs.org
镜像源的话找64位的下
卸载
去环境变量的系统变量删掉git的【环境变量只是为了全局使用】,然后控制面板卸载
安装
然后无脑下一步安装,除了安装目录可以改成自己的

文本变量默认使用vm,新手优先选 VS Code


安装完毕就可以使用

出现上面这个就是成功,桌面右键就也出现相关的
Git Bash:Unix与Linux风格的命令行,使用最多**,推荐最多**
Git CMD:Windows风格的命令行
GitGUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
Git基本理论
| 命令 | 作用 | 适用场景 | 保留历史记录 | 重置终端状态 |
|---|---|---|---|---|
clear/cls(windowsx下) |
清屏 | 日常清理,只是想隐藏之前的内容 | ✅ 是(往上滚能看到) | ❌ 否 |
reset |
重置终端 + 清屏 | 终端异常(乱码、卡住、无响应) | ❌ 否(彻底重置,无法恢复) | ✅ 是 |
rm -rf /会删除电脑整个文件,不要尝试
Git必要配置
git config -l = 显示全部配置(系统 + 全局 + 本地)
git config --global --list = 只看你自己的配置(最常用)
git config --system --list = 看电脑所有用户的配置(几乎不用)
设置用户名和邮箱:
git config -l
可以看到当前项目下面所有的配置
git config --system --list
系统配置,不会出现用户配置

git config --global --list = 只看你自己的配置(最常用)

下面这段表面自己的git身份凭证
user.name=kuangshen
user.email=24736743@qq.com
记住:
所有的配置文件都保存在本地
系统级:Git下

用户级:user下

编辑器配置(修改提交信息时用)
core.editor="" --wait你把 VS Code 设置成了 Git 的默认编辑器。- 当你执行
git commit时,会自动用 VS Code 打开提交信息编辑页面 --wait表示 Git 会等待你关闭 VS Code 后,再继续执行提交操作,这是标准配置。
- 当你执行
凭证与网络配置(和 Gitee 相关)
credential.https://gitee.com.provider=generic开启了 Gitee 的凭证管理,这样你每次推送代码时,Git 会自动保存你的账号密码,不用重复输入。http.sslbackend=schannel指定了 Git 使用 Windows 系统自带的 SSL 证书来处理 HTTPS 请求,避免因证书问题导致推送失败,这是 Windows 上的标准配置。
设置用户名和邮箱

Git工作原理【重点】



add:暂存区,并没有永久保存 checkout:从暂存区 / 本地仓库恢复文件到工作区/切换分支
commit:提交到本地仓库 reset:回退版本(撤销 commit)
push:提交到远程仓库 pull:远程代码拉本地
clone:远程仓库完整下载到本地(第一次下载用)
git add .把所有修改暂存
git commit -m "添加首页代码"就是给这次提交写个备注,告诉别人你改了什么
git push origin main就是把你的代码上传到 Gitee/GitHub'git reset --soft HEAD~1 :撤销上一次的提交(commit),但保留你写的所有代码 ,把代码放回暂存区 。
重点:HEAD 到底是什么
HEAD 就是一个 "指针",指向你本地仓库里当前所在的版本。
你可以这么理解:
- 本地仓库里有很多次提交,就像一串 "历史快照"
- HEAD 就是你当前正在看的那一张快照的标记
- 正常情况下,它会一直指向最新的一次提交版本 ,也就是你圈出来的这句话: 其中 HEAD 指向最新放入仓库的版本
举个例子:
- 你第一次提交代码,版本号是
commit A→ HEAD 指向A - 你第二次修改代码并提交,版本号是
commit B→ HEAD 自动移动,指向最新的B - 你用
git reset回到A版本 → HEAD 就会移动回去,指向A

git项目创建及克隆
先记住这6个命令

1.本地仓库搭建


2.克隆远程

区别
git clone是第一次下载整个仓库 ,git pull是后续更新本地仓库,两者使用场景完全不同。
| 特性 | git clone |
git pull |
|---|---|---|
| 作用 | 从远程仓库完整复制整个项目到本地 | 从远程仓库拉取最新代码,更新本地已有的项目 |
| 使用时机 | 你电脑上还没有这个项目,第一次获取代码时 | 你电脑上已经有项目,需要同步远程最新修改时 |
| 效果 | 下载所有文件、提交历史、分支记录,直接生成完整的本地仓库 | 只拉取远程新增的提交,合并到当前本地分支 |
| 前提条件 | 本地没有对应项目 | 本地已有项目,且已关联远程仓库 |
| 典型命令 | git clone https://gitee.com/xxx/xxx.git |
git pull origin main |
Git文件操作
这个作为了解,后面多用就知道了
| 状态 | 中文含义 | 说明 |
|---|---|---|
| Untracked | 未跟踪 | 文件在电脑里,但Git 根本没管它,不参与版本控制 |
| Unmodify | 已入库未修改 | 文件已经被 Git 管理,且本地文件和仓库里的版本一模一样 |
| Modified | 已修改 | 文件被 Git 管理,但你改了内容,本地文件和仓库版本不一样 |
| Staged | 已暂存 | 修改后的文件被你 git add 了,准备提交到仓库 |

未添加到git的文件是Untracked,添加后会到Staged,
之后没改动就是Unmodify,改动未提交就是Modified,
提交到暂存区就是Staged
决策是否还需要这个文件:git rm index.html就是把文件从 Git 版本库中移除
修改过程中: git checkout -- 文件名,丢弃修改,不要这个修改了的文件,修 改前的文件有保存
暂存后,回到工作区: git reset HEAD index.html,取消暂存,继续修改


git忽略文件
注意
并不是所有项目都要提交

.gitignore文件


.gitignore 是干嘛的?
它是 Git 的「忽略清单」,放在项目根目录,用来告诉 Git:哪些文件 / 文件夹不要纳入版本控制、不要提交到仓库。常见用途:
- 临时文件(日志、缓存)
- 编译产物(build/、target/)
- 敏感配置(密码文件、本地环境变量)
- IDE / 系统文件(.idea/、.DS_Store)
5 条核心规则逐条解释
- 空行 /
#开头的行是注释
- 空行:Git 会直接跳过,不生效
#开头:整行是注释,用来写说明,不影响实际效果gitignore
# 这是注释,Git 会忽略 *.log # 这行的后半部分是注释,前面的 *.log 会生效
- 支持 Linux 通配符(批量匹配文件)
表格
通配符 作用 例子 *匹配任意多个字符(包括 0 个) *.txt匹配所有.txt文件(a.txt、b.txt都匹配)?匹配任意一个字符 file?.txt匹配file1.txt、filea.txt,但不匹配file12.txt[abc]匹配括号里的任意一个字符 file[ab].txt匹配filea.txt、fileb.txt{a,b}匹配括号里的任意一个字符串 *.{log,txt}匹配.log和.txt文件
!开头:例外规则("除了这个都忽略")前面写了忽略规则,后面用
!可以把特定文件 "救回来",不被忽略。⚠️ 注意:规则顺序不能反,必须先写忽略规则,再写!例外规则。例子:
gitignore
*.txt # 忽略所有 .txt 文件 !lib.txt # 但 lib.txt 除外,会被 Git 追踪结果:
a.txt被忽略,lib.txt正常提交。
/开头:只匹配项目根目录的文件规则前面加
/,表示只匹配项目根目录下的文件 / 文件夹,子目录里的同名文件不受影响。例子:
/temp # 只忽略项目根目录下的 temp 文件夹 结果: 项目根目录的 /temp/ 会被忽略 子目录里的 /src/temp/ 不会被忽略 理解: 假设你的项目结构是这样: 你的项目/ ├── temp/ <-- 根目录的 temp ├── src/ │ └── temp/ <-- src 里面的 temp └── index.html /temp:只忽略 根目录的 temp/; src/temp/ 不会被忽略!还能正常提交! temp:所有叫 temp 的文件夹 全部忽略!不管在根目录、src 里、a/b/c 里,全部忽略 即: /temp = 只忽略【最外面】的 temp temp = 忽略【所有地方】的 temp
/结尾:表示要忽略的是整个目录规则后面加
/,表示要忽略的是整个目录,而不是单个文件。例子:
gitignore
build/ # 忽略 build/ 目录下的所有文件和子目录结果:
build/文件夹里的所有内容都不会被提交。
通用 .gitignore 模板
IDE 文件
.idea/
.vscode/ *.iml # 编译产物 build/ dist/ target/ # 日志文件 *.log logs/ # 临时文件 *.tmp *.swp # 系统文件 .DS_Store Thumbs.db
使用码云【使用+注册】
gotlab公司自己搭建的服务器,下载部署到linux即可

首先
尊重版权,然后下方会有相关的教学配置
然后
1.注册账号并在个人设置完善个人信息
2.设置本机绑定SSH公钥,实现免密码登录!
免密码登录,这一步挺重要的,码云是远程仓库,我们是平时工作在本地仓库!
进入 C:\Users\Administrator\.ssh 目录
生成公钥
ssh-keygen
本地添加密钥
bash
ssh-kevaen -t rsal

生成后就会有对应的文件

上面是公钥
下面是私钥
然后直接粘贴过来gitee的公钥,粘贴好后是默认标题的
3、将公钥信息publickey添加到码云账户中即可!
然后你的码云就和本地仓库建立联系
4、使用码云创建一个自己的仓库!


许可证:开源是否可以随意转载,开源但是不能商业使用,不能转载,...限制!
3.创建后本地开发

IDEA中集成Git操作
关于Git中分支说明
Git后续操作说明
多人协作
1.多模块开发
各自写不同模块 / 不同文件(最常见)
- A 写用户模块(user.js)
- B 写订单模块 (order.js)两人修改完全不同文件 👉 先后提交 0 冲突,直接合并成功,代码正常运行。
改同一文件同一行
- 只改不同行:无冲突,自动合并
- 改同一文件同一行 :Git 分不清留谁的代码 → 产生代码冲突
2.公司标准多人协作流程(防冲突)
- 所有人先拉最新代码
git pull再写代码 - 每个人新建独立功能分支开发,不在主分支硬写
- 写完提交自己分支,提合并请求
- 合并前自动检测冲突,有冲突先本地解决再合并
- 合并后主分支代码统一、能正常运行
3.极简多人协作 Git 命令
一、第一次拉项目
bash
git clone 仓库地址
二、日常开发标准流程
- 切到主分支,拉取最新代码
bash
git checkout main
git pull
- 新建自己功能分支(每人单独分支)
bash
git checkout -b 你的分支名
- 写完代码,暂存 + 提交
bash
git add .
git commit -m "写清楚功能内容"
- 拉取主分支最新代码(防冲突必做)
bash
git pull origin main
- 出现冲突:打开文件手动改完,再执行
bash
git add .
git commit -m "解决冲突"
- 推送自己分支到远程
bash
git push origin 你的分支名
三、合并代码(提 PR / 合并到主分支)
- 网页端提交 合并请求
- 别人审核通过后合并
- 所有人下次开发先
git pull更新
四、常用快捷命令
- 查看分支:
git branch - 切换分支:
git checkout 分支名 - 放弃本地修改:
git reset --hard
五、避坑口诀
先拉代码再开发,单独分支不乱改;不同文件无冲突,同文件同行才打架;提交前先合并主干 ,冲突本地解决完再推送。







