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