浅显易懂的 git 入门
浅显易懂的 git 入门
[TOC]
git 介绍
git的是一个流行和最常用的代码版本管理工具,它可以很方便的帮我们管理代码(记录代码版本信息,回滚代码版本等)和方便项团队协作。
使用方式
主要分为两种使用方式
- 命令行方式 底层原理
- 可视化工具的方式 方便、常用
命令行
该方式主要是通过 在 shell 窗口中,输入git相关的命令来实现功能
可视化工具
- vscode 自带有 我们学这个
- tortoisegit 小乌龟
- source tree 收费
下载和安装
下载和安装git
下载好后,直接双击安装即可
git bash 基本使用
- 按下回车表示执行
- 复制和粘贴不再是
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 复制代码
初始化git仓库
git主要是通过仓库来管理我们的项目代码
- 在你的项目文件夹内,打开 git 工具,输入命令来初始化git仓库
- 在你的项目内,会多了一个 隐藏文件夹 .git
代码编辑
模拟真实工作情况,可以在目录内 新建一些文件,简单编辑
查看仓库状态
可以随时通过 查看仓库状态,来获知下一步的操作步骤
添加暂存区
当你仓库内的文件发生修改时(新增、编辑、删除),都需要添加到暂存区
git add .
复制代码
此时,再次查看仓库状态
提交本地仓库
文件存在暂存区还是不安全的,因为文件需要提交到本地仓库,才算是一个完整的操作,后期才可以实现版本回滚
提交到本地仓库有一个关键信息,需要备注这个版本你做了什么事,如 增加了倒计时功能、增加了轮播图效果。一定要有语义,否则不符合公司规范,是个很低级的错误。
git commit -m "首页增加了轮播图"
复制代码
查看日志
只有做了提交操作,git仓库中才会存在日志信息。
git log
复制代码
如果做了版本回退,可以使用
git reflog
复制代码
相关概念
git中,存在三个区域和对应的三种文件状态
三个区域
- 工作目录 git仓库管理的目录就叫做工作目录
- 暂存区 执行了
git add .
后,被编辑的文件就被添加到暂存区中 - 本地仓库 执行了
git commit
后,暂存区中的文件就被添加到本地仓库了
三个状态
在git仓库中,文件只有三种状态
- 已修改(modified) 表示文件做了编辑,但是没有添加到暂存区
- 已暂存(staged) 表示文件添加到了暂存区,但是没有提交到本地仓库
- 已提交(committed) 表示文件已经提交到本地仓库
远程仓库
介绍
远程仓库其实就是本地仓库的一个备份,一般分类两类
准备工作
实际工作中都会有项目组长提前完成
- 注册账号
- 新建远程仓库
创建成功
克隆远程仓库
实际工作中,项目组长会直接发给我们一个 远程仓库地址
我们现在自己 复制一下 刚才新建好的远程仓库地址
打开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 [email protected]: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 clone -b 远程仓库上的分支名称 远程仓库地址 复制代码
- 将本地某个分支推送到远程仓库对应的分支上
- 在本地仓库中先切换分支
- 开始推送
git push --set-upstream 本地仓库中记录的远程仓库的别名 分支名称 复制代码
团队协作
行业通用解决方案
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):实现登录
复制代码
忽略清单
在git仓库中,可能存在一些文件不想要被git所管理,不需要进行团队共享。此时可以在忽略清单中添加忽略。
忽略清单的文件夹名是固定的,必须是 .gitignore, 然后在里面添加要被忽略掉文件即可
需要注意的是,一般情况下,在初始化git仓库的时候,忽略清单也应该同时创建
.gitignore
## 忽略 1.txt 文本
1.txt
## 忽略后缀名为 mp4 的文件
*.mp4
## 忽略文件夹
vscode/
复制代码
vscode 可视化 操作git
初始化git仓库
如果你的仓库是克隆远程仓库的,则不需要进行这一步操作
- 使用vscode打开一个没有git管理的文件夹
- 点击按钮即可完成初始化 git init
添加到暂存区&提交本地仓库
添加远程仓库地址
如果你的仓库是克隆远程仓库的,则不需要进行这一步操作
推送到远程仓库
后期再推送
拉取更新
git 相关插件
- GitLens — Git supercharg 方便查看文件编辑历史 和 操作git其他功能
- Git History,方便查看文件历史信息
SSH 补充
一些电脑系统在使用码云的时候,没有自动记录密码功能,就可能会出现频繁要求添加账号和密码的问题。 这个时候可以通过设置 ssh 来解决。