概念:一个免费开源,分布式的代码版本控制系统,帮助开发与团队维护代码
作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容
个人本机使用:Git基础命令和概念
多人共享使用:团队开发同一个项目的代码版本管理
总结:
1、为何学习Git?
管理代码版本、记录、切换、合并代码
2、Git学习
现在在本机自己使用
在学习多人共享使用
3、如何安装使用?
程序双击安装
在 VSCode 中使用 bash 终端以及 git 命令
Git仓库:记录文件状态内容的地方,存储着修改的历史记录
创建:
1、把本地文件夹转换成Git仓库:命令 git init
2、从其他服务器上克隆Git仓库
要打开git专用的终端 普通终端右边加号
总结
1、什么是Git仓库?
记录文件状态内容和历史记录的地方(.git文件夹)
2、如何创建Git仓库?
把本地文件夹转换成Git仓库:命令 git init
从其他服务器上克隆 Git 仓库
Git使用时:
工作区:实际开发时操作的文件夹
暂存区:保存之前的准备区域(暂存改动过的文件)
版本库:提交并保存暂存区中的内容,产生一个版本快照
(如果这个文件在某个文件下 要写相对路径)
需求:把登录页面新增后,暂存并提交
总结
1、Git使用时有哪些区域?
工作区、暂存区、版本库
2、工作区的内容,最终要如何保存在版本库中?
git add 添加到暂存区
等待时机后 git commit 提交保存到版本库,产生一次版本快照记录
Git文件 2 种状态:
未跟踪:新文件,从未被 Git 管理过
已跟踪:Git 已经知道和管理的文件
使用:修改文件,暂存,提交保存记录,如此反复
需求:新增 css文件,并使用 git status -s 查看文件状态,并最终提交 (在终端里看状态)
需求:新增css文件,并使用 git status -s 查看文件状态,并最终提交
第一列是暂存区状态
第二列是工作区状态
总结:
1、Git文件状态分为哪2种?
未跟踪和已跟踪(新添加、未修改、已修改)
2、如何查看暂存区和工作区文件状态?
git status -s
暂存区:临时存储,可以临时恢复代码内容,与版本库解耦
暂存区 —> 覆盖 —> 工作区,命令:git restore 目标文件
(注意:完全确认覆盖时使用)(在VSCode没关闭前的 ctrl + Z是能撤销的 但是关闭后无法撤销)
从暂存区移除文件,命令:git rm --cached 目标文件名 (移除后 工作区的文件名为未跟踪状态)
需求:新增JS代码并暂存提交产生新的版本快照
步骤:
1、新增js文件和内容
2、临时存的在暂存区
3、提交保存到版本库
概念:把版本库某个版本对应的内容快照,恢复到工作区/暂存区
查看提交历史:git log --oneline
reset回退版本是从右向左一步一步进行辐射的
回退命令:
git reset --soft 版本号(其他文件未跟踪)
git reset --hard 版本号 (git reset 的恢复会先把对应这个版本的内容恢复到暂存区,然后接着会对比暂存区和工作区的内容然后进行恢复 如果没有恢复 可以再写个暂存 然后在hard退回)
git reset --mixed 版本号 (与 git reset 等价)
注意1:只有记录在版本库的提交记录才能恢复
注意2:回退后,继续修改 —> 暂存 —>提交操作即可(产生新的提交记录过程)
总结
1、什么是Git回退版本?
把版本库某个版本对应的内容快照,恢复到工作区/暂存区
2、强制覆盖暂存区和工作区的命令?
git reset --hard 版本号
3、如何查看提交历史?
git log --oneline
git reflog --oneline
需求:删除 editor.js文件,并生产一次版本记录
步骤:
1、手动删除工作区文件
2、暂存变更 / 手动删除暂存区文件造成变更
3、提交保存
总结:工作区只要改变,都可以暂存提交产生新记录
概念:.gitignore 文件可以让 git 彻底忽略跟踪制定文件
目的:让 git 仓库更小更快,避免重复无意义的文件管理
忽略命令:
例如:
1、系统或软件自动生成的文件
2、编译产生的结果文件
3、运行时生成的日志文件,缓存文件,临时文件等
4、涉密文件、密码、秘钥等文件
创建:
1、项目根目录新建 .gitignore 文件
2、填入相应配置来忽略指定文件
注意:如果文件已经被暂存区跟踪过,可以从暂存区移除即可(git rm --catch)
匹配成功后 工作区的文件名字会变灰
概念:本质上是指向提交节点的可变指针,默认名字是master,master默认指向最后一次对对提交记录
注意:HEAD指针影响工作区/暂存区的代码状态(HEAD指针是实际上起作用的)
场景:开发新需求/修复Bug,保证主线代码随时可用,多人协同开发提高效率
例如:
在现有代码上创建新分支完成内容列表业务
突然需要紧急修复Bug - 单独创建分支解决Bug
需求:创建内容列表 content分支,并产生3次提交记录
步骤:
1、创建分支命令:git branch 分支名
2、切换分支命令:git checkout 分支名
3、工作区准备代码并暂存提交,重复3次
总结:
1、什么是Git分支?
指针,指向提交记录
2、HEAD指针的作用?
影响暂存区和工作区的代码
3、如何创建和切换指针?
git branch 分支名
git checkout 分支名
需求:新建 login-bug 分支,做 2 次提交记录(对手机号长度,验证码长度做判断)
步骤:
1.切回到主分支:git checkout master
2.创建新分支:git branch login-bug
3.切换新分支:git checkout login-bug
4.修改代码,暂存,提交产生版本记录
需求:把log-bug 合并回到 master分支并删除log-bug分支
步骤:
1、切回到要合入的分支上:git checkout master
2、合并其他分支过来: git merge log-bug
3、删除合并后的分支指针:git branch -d log-bug
注意:要先合并再删除不需要的分支
合并提交:发生于原分支产生了新的提交记录后,在合并回去时发生,自动使用多个快照记录合并后产生一次新的提交
步骤:
1、切回到要合入的分支上:git checkout master
2、合并其他分支过来:git merge content
3、删除合并后的分支:git branch -d content
最后合并回到主分支上时,提交记录流程图:
注意:提交记录的顺序按照产生的先后顺序排列,而非合并的先后顺序
需求1:基于 master 新建 publish 分支,完成发布文章业务,然后修改内容页面的 html 文件的title标签,并提交一次
需求2:切换到 master , 也在修改内容页面的 html 文件的 title 标签,并提交一次
冲突:把 publish 分支合并到 master 回来,产生合并冲突
概念:不同分支中,对同一个文件的同一部分修改,Git无法感觉的合并,产生合并冲突
解决:
1、打开VSCodde找到冲突文件并手动解决
2、解决后需要提交一次记录
避免:(多交流)
1、按页面划分不同分支开发
2、公共代码在统一文件夹维护
3、Node等版本软件统一,npm包统一下载
--soft 模式保留暂存区和工作区原本内容
--hard 模式不保留暂存区和工作区原本内容
--mixed模式不保留暂存区,工作区保留(默认)先覆盖到暂存区,再用暂存区对比覆盖工作区
概念:托管在因特网或其他网络中的你的项目的版本库
作用:保存版本库的历史记录,多人协作
创建:公司自己服务器/第三方托管平台(Gitee、GitLab、GitHub……)
需求:创建远程版本库,并把本地Git仓库推送上去保存
步骤:
1、注册第三方托管平台网站账号
2、新建仓库得到远程仓库Git地址(这个是在git上操作的)
3、本地Git仓库添加远程仓库原点地址(可以理解为建立联系)
命令:git remote add 远程仓库别名(叫撒都行) 远程仓库地址
例如:git remote add origin https://gitee.com/lidongxu/work.git
4、本地Git仓库推送版本记录到远程仓库
命令:git push -u 远程仓库别名 本地和远程分支名
例如:git push -u oringin master
完整写法:git push --set-upstream origin master:master
总结:
1、远程版本库的作用?
保存提交历史记录,多人共享
2、远程版本库使用步骤?
创建远程版本库(自己服务器/第三方托管平台)
本地版本库设置远程地址
推送本地版本库到远程
3、推送的命令?
git push -u origin master
克隆:拷贝一个Git仓库到本地,进行使用
命令:git clone 远程仓库地址 例如:git clone https://gitee.com/lidongxu/work.git
效果;在运行命令所在文件夹,生成 work 项目文件夹(包含版本库,并映射到暂存区和工作区)
注意1:Git本地仓库已经建立好和远程仓库的链接
注意2:仓库公开随意克隆,推送需要身为仓库团队成员
克隆时,右键打开git Bah终端 在里面输入git命令
git clone 远程仓库网址
就会在你当前终端生成仓库名字文件夹(克隆成功)
进入中国文件夹中:cd 文件夹名字/
隐藏的.git文件夹才是git仓库的一个准确位置
接着可以输入git log --oneline 查看所有提交历史记录
需求:小传新代码共享给小智
步骤:
1、小传开发代码 —> 工作区 —> 暂存区 —> 提交 —> 拉取(可选) —> 推送
2、小智 —> 拉取(后续也可以开发代码 —> …… —> 推送)
3、想要看到别人同步上去的最新内容: git pull origin master 等价于 (git pull 远程仓库别名地址 拉取的是哪个分支下的最新提交记录)
git fetch origin master:master(获取远程分支记录到本地,未合并)
git merge origin/master (把远程分支记录合并到所在分支下)
使用:源代码管理,进行暂存,撤销,对比差异,提交等操作
注意:VSCode打开的项目文件夹下需要有.git仓库
需求:把Webpack压缩好的dist分发文件夹网页,部署到码云上,开启Page服务在互联网中浏览
步骤:
1、初始化本地Git仓库(这次是非空文件夹-配套素材dist文件夹)
2、初始化远程Git仓库(这一次也是非空的)
3、本地配置远程仓库连接
4、本地拉取合并一下(确认本地要包含远程内容时使用)
5、本地推送到远程Git仓库
6、开启page网页服务得到地址浏览
详细步骤:
①、先确认项目能够正常使用,打包代码后,对git终端进行一个初始化管理 git init 生成一个 .git文件夹。表明当前项目被git管理。
②、暂存 git add .
③、提交 git commit -m “注释说明” (本地准备完成)
④、打开gitee网站,建立一个新的仓库(私有的,非空的)
如果想清空(把现有的内容和所有提交记录都清空了)
要拿到git地址是在这个地方 以.git结尾的
⑤、让远程git仓库与本地的git仓库建立联系
给本地配置 git remote add (前面是固定的)ori(仓库别名,自己随便起)https://gitee.com/zelina173/page-hm-data.git(这个是别名对应的远程git仓库地址)
⑥、输入git push -u ori master(是远程仓库的分支名) master(自己仓库的分支名) (一般这俩俩名重复写一个即可)
git push -u ori master
error报错 在hint提示里面说 在推上去(push)之前先拉取(pull)一次远程仓库
⑦、按照提示进行操作
git pull ori master
错误:拒接合并不相关的历史记录
本地里面是四个文件夹里面的文件 远程仓库里面是md文件,没有任何关系
所以要强制合并
⑧、git pull --rebase ori 远程仓库的别名 远程及本地分支的名字
git pull --rebase ori master
此时工作区出现远程的文件
⑨、把本地仓库内容推到远程仓库里 git push ori master
⑩、到Gitee网站里刷新就能看到提交记录和本地仓库内容