浅显易懂的 git 入门
浅显易懂的 git 入门
课程内容
git 介绍
git 的是一个流行和最常用的分布式代码版本管理工具,它可以很方便的帮我们管理代码(记录代码版本信息,回滚代码版本等)和方便团队协作。
使用方式
主要分为两种使用方式
- 命令行方式 底层原理
- 可视化工具的方式 方便、常用
命令行
该方式主要是通过 在 shell 窗口中,输入 git 相关的命令来实现功能
可视化工具
-
vscode 自带有 我们学这个
-
tortoisegit 小乌龟
-
source tree 收费
下载和安装
下载和安装 git
下载好后,直接双击安装即可
-
windows
在你电脑的空白位置,鼠标右键,如果出现以下提示,表示安装成功
-
mac
mac 直接打开终端 ,即可使用
git bash 基本使用
-
ctrl + 滚轮 或者
ctrl + +
可以放大缩小界面 -
按下回车表示执行
-
复制和粘贴不再是
ctrl + c
、ctrl + v
,可以通过鼠标右键来操作 -
输入
clear
表示清空控制台 -
当窗口内容太多时
- 按下 回车 表示继续查看隐藏内容
- 按下
q
表示退出
工作常用流程
查看版本号
git --version
初始化个人信息
一台电脑,只需要初始化信息一次,告诉 git,我们的用户名和邮箱
-
查看用户名
git config --global user.name
-
查看邮箱
git config --global user.email
-
设置用户名
git config --global user.name "xxx"
-
设置邮箱
git config --global user.email "xxx"
初始化 git 仓库
git 主要是通过仓库来管理我们的项目代码
-
在你的项目文件夹内,打开 git 工具,输入命令来初始化 git 仓库
git init
-
在你的项目内,会多了一个 隐藏文件夹 .git
代码编辑
模拟真实工作情况,可以在目录内 新建一些文件,简单编辑
查看仓库状态
可以随时通过 查看仓库状态,来获知下一步的操作步骤
git status
添加暂存区
当你仓库内的文件发生修改时(新增、编辑、删除),都需要添加到暂存区
git add .
此时,再次查看仓库状态
提交本地仓库
文件存在暂存区还是不安全的,因为文件需要提交到本地仓库,才算是一个完整的操作,后期才可以实现版本回滚
提交到本地仓库有一个关键信息,需要备注这个版本你做了什么事,如 增加了倒计时功能、增加了轮播图效果。一定要有语义,否则不符合公司规范,是个很低级的错误。
git commit -m "首页增加了轮播图"
查看日志
只有做了提交操作,git 仓库中才会存在日志信息。
git log
如果做了版本回退,可以使用
git reflog
相关概念
git 中,存在三个区域和对应的三种文件状态
三个区域
- 工作目录 git 仓库管理的目录就叫做工作目录
- 暂存区 执行了
git add .
后,被编辑的文件就被添加到暂存区中 - 本地仓库 执行了
git commit
后,暂存区中的文件就被提交到本地仓库了
三种状态
在 git 仓库中,文件只有三种状态
- 已修改(modified) 表示文件做了编辑,但是没有添加到暂存区
- 已暂存(staged) 表示文件添加到了暂存区,但是没有提交到本地仓库
- 已提交(committed) 表示文件已经提交到本地仓库
远程仓库
介绍
远程仓库其实就是本地仓库的一个备份,一般分为两类
- 企业中,公司会有自己专门的远程仓库,公司会给我们开发者对应的远程仓库链接的
- 互联网上,我们自己也可以使用免费的远程仓库,方便自己使用或者方便和网友沟通交流
- 码云 国内
- github 全球
准备工作
实际工作中都会有项目组长提前完成
- 注册账号
- 新建远程仓库
创建成功
克隆远程仓库
实际工作中,项目组长会直接发给我们一个 远程仓库地址
我们现在自己 复制一下 刚才新建好的远程仓库地址
打开 git 窗口,输入命令,进行克隆 (clone)
git clone https://gitee.com/ukSir/web007.git
如果是私密仓库,则会弹出提示 要求填写你远程仓库(码云)的账号和密码。
推送到远程仓库
本地仓库仓库的代码 推送到远程仓库
当我们克隆下来的仓库中的代码进行过编辑后
需要注意的是: 不要出现代码写了一半,没有提交代码就推送更新
git push
此时,刷新码云上的网页,即可看到你所上传的代码。
拉取更新
团队协作过程中,我们想要获取到远程仓库上别人推送上去的新代码,就可以使用 拉取更新
需要注意的是: 不要出现代码写了一半,没有提交代码就拉取更新
git pull
远程仓库补充
查看添加的远程仓库地址
可以看到本地仓库中已经建立了的远程仓库的链接信息
git remote -v
添加远程仓库地址
一个本地仓库,可以对应多个远程仓库地址,但是一般都是 1 对 1
git remote add 变量名 远程仓库地址
- 变量名 可以自己取
- 远程仓库地址 可以自己新建
推送到远程仓库
如果延续上一个步骤,我们直接推送代码,会出现问题
此时要使用上个知识点,添加远程仓库地址
git remote add origin git@gitee.com:ukSir/web008.git
然后指定仓库名称并且指定分支开始推送
git push --set-upstream origin master
-
--set-upstream
表示将本地分支 master 推送到 远程仓库 master分支上只要成功推送过一次后,后期又可以直接使用
git push
进行推送了 -
master
本地仓库中的默认分支
撤销
分为两种
- 将未添加到暂存区的代码全部撤销
- 把添加到暂存区中的代码进行撤销
把未添加到暂存区的代码全部撤销
git checkout .
把暂存区中的代码撤销到工作区
git reset .
把暂存区中的代码全部撤销
git reset --hard
回滚
可以实现代码时光穿梭,将你的代码还原到某一个版本
需要注意的是: 不要出现代码写了一半,就进行代码的回滚
-
先查看日志,获取版本 ID
git log
-
执行回滚
git reset --hard 版本ID
分支
git 在运作的时候都是基于分支的,分支可以理解为就是项目代码的一个备份
作用
我们可以建立多个分支,分支的名称可以自定义。如
- 主分支 表示线上稳定运行的代码
- dev 分支 表示开发状态下,每一个成员都是在 dev 分支下工作,这样哪怕出现事故,也不会影响到主分支
- 测试分支 表示代码开发完毕,测试人员和开发人员在测试分支下进行修复 bug。
- 自己名称命名的分支 表示团队开发中,每一个人都可以使用 自己名称来开设一个分支,然后在此分支上进行开发。
功能
在 git 中,常见的分支功能主要有
-
查看分支
git branch
-
创建分支
git branch 分支名称
-
切换分支
git checkout 分支名称
-
创建并切换分支
git checkout -b 分支名称
-
合并分支
把 dev 分支合并到 master 分支上
需要注意的是: 不要出现代码写了一半,就进行分支的合并
-
先切换回主分支
git checkout master
-
然后再合并分支
git merge dev
-
-
删除分支
git branch -d 分支名称
-
克隆指定远程仓库的某个分支
git clone -b 远程仓库上的分支名称 远程仓库地址
-
将本地某个分支推送到远程仓库对应的分支上
-
在本地仓库中先切换分支
-
开始推送
git push --set-upstream 本地仓库中记录的远程仓库的别名 分支名称
或者
git push
-
团队协作
行业通用解决方案
GitFlow、GitHubFlow 以及 GitLabFlow
Git 工作流中常见的三种分支策略:GitFlow、GitHubFlow 以及 GitLabFlow
常规工作流程
冲突
冲突是一种现象:在 git 中进行文件的更新中或者合并中,如果发现同一时刻,同一位置进行了修改,那么就会出现冲突
一般来说,出现冲突的场景主要有以下两种:
- 分支合并时
- 拉取更新时
分支合并-冲突
如果两个分支,同一时刻修改了同一文件的同一位置,那么在做分支合并时,就会出现冲突。
解决冲突
手动修改要调整的代码,然后执行 git add
、 git commit
、 即可
拉取更新-冲突
解决冲突
手动修改要调整的代码,然后执行 git add
、 git commit
、 即可
commit 风格
企业开发中,我们提交 commit 的日志 格式也是有要求的,目前一般是参考 angular 推出的规范。
git commit -m [type](scope):备注信息
type 操作类型
用来描述本次 commit 主要的用途
类型 | 说明 |
---|---|
feature 简写: feat | 开发新功能 |
fix | 修复 bug |
docs | 仅修改了文档,如 readme.md |
style | 仅仅是对格式进行修改,如逗号、缩进、空格等。不改变代码逻辑。 |
refactor | 代码重构,没有新增功能或修复 bug |
perf | 优化相关,如提升性能、用户体验等。 |
test | 测试用例,包括单元测试、集成测试。 |
chore | 改变构建流程、或者增加依赖库、工具等。 |
revert | 版本回滚 |
示例:
git commit -m feat:实现登录
scope 受影响的文件-可选
用于说明 本次 commit 影响的范围,比如: views, component, utils, test…
git commit -m feat(index.html):实现登录
vscode 可视化 操作 git
初始化 git 仓库
如果你的仓库是克隆远程仓库的,则不需要进行这一步操作
-
使用 vscode 打开一个没有 git 管理的文件夹
-
点击按钮即可完成初始化 git init
添加到暂存区&提交本地仓库
添加远程仓库地址
如果你的仓库是克隆远程仓库的,则不需要进行这一步操作
推送到远程仓库
后期再推送
拉取更新
忽略清单
在 git 仓库中,可能存在一些文件不想要被 git 所管理,不需要进行团队共享。此时可以在忽略清单中添加忽略。
忽略清单的文件夹名是固定的,必须是 .gitignore, 然后在里面添加要被忽略掉文件即可
需要注意的是,一般情况下,在初始化 git 仓库的时候,忽略清单也应该同时创建
.gitignore
## 忽略 1.txt 文本
1.txt
## 忽略后缀名为 mp4 的文件
*.mp4
## 忽略文件夹
vscode/
git 相关插件
-
GitLens — Git supercharg 方便查看文件编辑历史 和 操作 git 其他功能
-
Git History,方便查看文件历史信息
SSH 补充
一些电脑系统在使用码云的时候,没有自动记录密码功能,就可能会出现频繁要求添加账号和密码的问题。 这个时候可以通过设置 ssh 来解决。