1. Git基础
Git官网(下载速度慢) https://git-scm.com/
阿里云加速(下载速度快):https://npm.taobao.org/mirrors/git-for-windows/
1.1 版本管理
1.1.1什么是版本管理
版本管理是一种记录文件变化的方式,以便将来查阅特定版本的文件内容。
1.1.2 Git基本概念

版本库👉
.git当我们使用git管理文件时,比如
git init时,会创建出一个.git文件,我们把这个文件称为版本库。.git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。
工作区
本地项目存放文件的位置,即workspace
暂存区(Index/Stage)
暂时存放文件的地方,通过add命令将工作区的文件加到缓冲区
本地仓库(Repository)
通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
通常而言,HEAD指针指向的是master分支
远程仓库(Remote)
GitHub托管项目时,它就是一个远程仓库
通常我们使用clone命令将远程仓库代码拷贝下来,本地代码更新后,通过push推送到远程仓库
1.1.3 人为维护文档版本的问题
文档数量多且命名不清晰导致文档版本混乱
每次编辑文档都需要复制,不方便
多人同时编辑同一个文档,容易产生覆盖
1.2 Git 是什么
Git是一个版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。

1.3 基本工作流程

| git仓库 | 暂存区 | 工作目录 |
|---|---|---|
| 用于存放提交记录 | 临时存放被修改文件 | 被Git管理的项目目录 |
1.4 Git使用前配置
在使用git前,需要告诉git你是谁,在向git仓库中提交时需要用到。
配置提交人姓名:
git config --global user.name 提交人姓名配置提交人邮箱:
git config --global user.email 提交人邮箱查看git配置信息:
git config --list
「注意」
如果要对配置信息进行修改,重复上述命令即可。
配置只需要执行一次。
1.5 提交步骤
git init初始化git仓库git status查看文件状态git add 文件列表追踪文件git commit -m 提交信息向本地仓库中提交代码git log查看提交记录git push https://github.com/ovfan/git-demo.git master本地仓库推送到GitHub远程仓库git remote add origin https://github.com/ovfan/git-demo.git为远端仓库地址添加别名。添加完别名后,下次推送使用
git push origin master
git push -u 远程仓库地址别名 分支名称-u 记住推送地址及分支,下次推送只需要输入git push即可
1.6 撤销
用暂存区中的文件覆盖工作目录中的文件:
git checkout 文件将文件从暂存区中删除:
git rm --cached 文件将git仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作区目录:
git reset --hard commitID
2. Git 进阶
2.1 分支
为了便于理解,可以认为分支就是当前工作目录中代码的一份副本,使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。
2.1.1 分支细分
主分支(master):第一次向 git 仓库中提交更新记录时自动产生的一个分支。

主分支,用于部署生产环境的分支,确保稳定性。
master分支一般由develop以及hotfix分支合并,任何情况下都不能直接修改代码。
开发分支(develop):作为开发的分支,基于 master 分支创建。

develop为开发分支,通常情况下,保存最新完成以及bug修复后的代码。
开发新功能时,feature分支都是基于develop分支下创建的。
功能分支(feature):作为开发具体功能的分支,基于开发分支创建。

开发新功能,基本上以develop为基础创建feature分支。
分支命名:feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module。
4.release分支
release 为预上线分支,发布提测阶段,会release分支代码为基准提测。
5.hotfix分支
分支命名:hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似。
线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。
「功能分支 -> 开发分支 -> 主分支」
2.12分支命令
git branch查看本地分支git branch -r查看远程分支git branch 分支名称创建分支git checkout -b 分支名称创建并切换到新建分支
git checkout 分支名称切换分支git merge 来源分支合并分支git branch -d 分支名称删除分支分支被合并后才允许删除
git branch -D强制删除
git branch -m <oldbranch-name> <newbranch-name>重命名分支git add .全部上传到缓存区git add 指定文件指定文件上传到缓存区
2.2 暂时保存更改
在git 中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
使用场景:分支临时切换
存储临时改动:
git stash恢复改动:
git stash pop
3. GitHub
当和开发团队共享数据时,设置一个远程仓库,可以把它看成一个文件管理服务器,利用这个服务器可以与开发团队的其他成员进行数据交换。
3.1 拉取操作
克隆远端数据仓库到本地:
git clone 仓库地址拉取远程仓库中最新的版本:
git pull 远程仓库地址 分支名称
3.2 ssh免登录
生成密钥:ssh-keygen
密钥存储目录:C:\Users\lenovo\.ssh
公钥名称:id_rsa.pub
私钥名称:id_rsa
3.3 GIT忽略清单
将不需要被git管理的文件名字添加到此文件中,在执行git命令的时候,git就会忽略这些文件。
git忽略清单文件名称:「.gitignore」
将工作目录中的文件全部添加到暂存区:git add .
看看如何配置该文件信息。👇
# 此行为注释 会被Git忽略
# 忽略 node_modules/ 目录下所有的文件
node_modules
# 忽略所有.vscode结尾的文件
.vscode
# 忽略所有.md结尾的文件
*.md
# 但README.md 除外
!README.md
# 会忽略 doc/something.txt 但不会忽略doc/images/arch.txt
doc/*.txt
# 忽略 doc/ 目录下所有扩展名为txt文件
doc/**/*.txt