Git版本控制

Git初识

概念:一个免费开源,分布式的代码版本控制系统,帮助开发与团队维护代码

作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容

个人本机使用:Git基础命令和概念

多人共享使用:团队开发同一个项目的代码版本管理

Git安装&配置用户信息

总结:

1、为何学习Git?

        管理代码版本、记录、切换、合并代码

2、Git学习

        现在在本机自己使用

        在学习多人共享使用

3、如何安装使用?

        程序双击安装

        在 VSCode 中使用 bash 终端以及 git 命令

掌握Git仓库

Git仓库:记录文件状态内容的地方,存储着修改的历史记录

创建:

1、把本地文件夹转换成Git仓库:命令 git init

2、从其他服务器上克隆Git仓库

需求:创建一个空白的 Git 仓库

要打开git专用的终端 普通终端右边加号

  总结

1、什么是Git仓库?

        记录文件状态内容和历史记录的地方(.git文件夹)

2、如何创建Git仓库?

        把本地文件夹转换成Git仓库:命令 git init
        从其他服务器上克隆 Git 仓库

Git的三个区域

Git使用时:

工作区:实际开发时操作的文件夹

暂存区:保存之前的准备区域(暂存改动过的文件)

版本库:提交并保存暂存区中的内容,产生一个版本快照

命令作用
git add 文件名
(如果这个文件在某个文件下 要写相对路径)
暂存指定文件
git add.暂存所有改动的文件
git commit -m “注释说明”提交并保存,产生版本快照

需求:把登录页面新增后,暂存并提交

总结

1、Git使用时有哪些区域?

        工作区、暂存区、版本库

2、工作区的内容,最终要如何保存在版本库中?

        git add 添加到暂存区

        等待时机后 git commit 提交保存到版本库,产生一次版本快照记录

Git文件状态

Git文件 2 种状态:

未跟踪:新文件,从未被 Git 管理过

已跟踪:Git 已经知道和管理的文件

使用:修改文件,暂存,提交保存记录,如此反复

需求:新增 css文件,并使用 git status -s 查看文件状态,并最终提交 (在终端里看状态)

文件状态概念场景
未跟踪(U)从未被Gitt管理过新文件
新添加(A)第一次被Git暂存之前版本记录无此文件
未修改('')三个区域统一提交保存后
已修改(M)工作区内容变化修改了内容产生

状态标记英文在文件后面能看到

需求:新增css文件,并使用 git status -s 查看文件状态,并最终提交

第一列是暂存区状态

第二列是工作区状态

总结:

1、Git文件状态分为哪2种?

        未跟踪和已跟踪(新添加、未修改、已修改)

2、如何查看暂存区和工作区文件状态?
        git status -s

Git暂存区使用

暂存区:临时存储,可以临时恢复代码内容,与版本库解耦

暂存区 —> 覆盖  —> 工作区,命令:git restore 目标文件

(注意:完全确认覆盖时使用)(在VSCode没关闭前的 ctrl + Z是能撤销的 但是关闭后无法撤销)

从暂存区移除文件,命令:git rm --cached 目标文件名 (移除后 工作区的文件名为未跟踪状态)

练习 - 登录页面

需求:新增JS代码并暂存提交产生新的版本快照

步骤:

1、新增js文件和内容

2、临时存的在暂存区

3、提交保存到版本库

Git回退版本

概念:把版本库某个版本对应的内容快照,恢复到工作区/暂存区

查看提交历史: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 分支名

练习-登录 bug修复

需求:新建 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包统一下载

Git常用命令

命令作用注意
git -v查看git版本
git init初始化git仓库
git add 文件标识暂存某个文件文件标识以终端为起始的相对路径
git add .暂存所有文件
git commit -m “说明注释”提交产生版本记录每次提交,把暂存区内容快照一份
git status查看文件状态-详细信息
git status -s查看文件状态-简略信息第一列是暂存区状态,第二列是工作区状态
git ls-files查看暂存区文件列表
git restore 文件标识从暂存区恢复到工作区如果文件标识为.则恢复所以文件
git rm --cached 文件标识从暂存区移除文件不让git跟踪文件变化
git log查看提交记录-详细信息
git log --oneline查看提交记录-粗略信息版本号 分支指针 提交时说明注释
git reflog --oneline查看完整历史-简略消息包括提交、切换、回退等所有记录
git reset 版本号切换版本代码到暂存区和工作区

--soft 模式保留暂存区和工作区原本内容

--hard 模式不保留暂存区和工作区原本内容

--mixed模式不保留暂存区,工作区保留(默认)先覆盖到暂存区,再用暂存区对比覆盖工作区

git branch 分支名创建分支
git branch查看本地分支
git branch -d 分支名删除分支请确保记录已经合并到别的分支下,在删除分支
git checkout 分支名切换分支改变HEAD指针指向
git chechout -b 分支名创建并立刻切换分支
git merge 分支名把分支提交到历史记录并合并到当前所在分支

Git远程仓库

概念:托管在因特网或其他网络中的你的项目的版本库

作用:保存版本库的历史记录,多人协作

创建:公司自己服务器/第三方托管平台(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仓库到本地,进行使用

命令: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

使用:源代码管理,进行暂存,撤销,对比差异,提交等操作

注意: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网站里刷新就能看到提交记录和本地仓库内容

Git常用命令

命令作用注意
git remote add 远程仓库别名 远程仓库地址添加远程仓库地址别名唯一,地址是.git结尾的网址
git remove -v查看远程仓库地址
git remote remove 远程仓库别名删除远程仓库地址
git pull 远程仓库 别名 分支名拉取完整写法:git pull 远程仓库别名 远程分支名:本地分支名 等价于:git fetch 和 git merge
git push 远程仓库别名 分支名推送完整写法:git push 远程仓库别名 本地分支名:远程分支名 -u:建立通道后以后可以简写 git push
git pull --rebase 远程仓库别名 分支名拉取合并合并没有关系的记录
git clone 远程仓库地址克隆从0得到一个远程的Git仓库到本地使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值