1.介绍
1.1、git
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。[1]也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
官网下载:git
1.2、对比其他版本软件
SVN优缺点
- 优点:1. 集中式管理系统2. 管理方便,逻辑明确3. 易于管理,集中式服务器更能保证安全性4. 代码一致性非常高5. 适合开发人数不多的项目开发
- 缺点:1. 服务器压力太大,数据库容量暴增2. 如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等3. 不适合开源开发
git优缺点
- 优点:1. 适合分布式开发,强调个体2. 公共服务器压力和数据量都不会太大3. 速度快,灵活4. 任意两个开发者之间可以很容易的解决冲突5. 离线工作
- 缺点:1. 学习周期相对而言比较长2. 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息
2、安装git软件
可以在常见的操作系统安装。
linux、mac 自带了git命令行,直接使用即可。
windows 需要手动安装
①双击打开安装包
3、git基本使用
3.0、git使用配置
安装完git之后,需要在git配置用户名和邮箱,理论上是可以随便填写的。
实际在生产环境中,需要根据分配给你的账号里的用户名和邮箱填写。方便统计代码提交量。
# 查看
git config --global user.name
git config --global user.email
# 设置
git config --global user.name ***
git config --global user.email ***[email protected]
3.1、git仓库初始化
仓库一般以一个项目为基准。
仓库存储代码的地方,记录代码版本。
哪里是需要代码管理的地方,在哪里执行。
目录结构内容不要太多,在子级目录中不要存在多级的.git文件夹
git init
3.2、本地版本提交
工作区 当前操作的目录
暂存区 需要进行版本提交的临时存储区
版本库 存储了版本信息
# 查看当前目录的状态
git status
# 工作区添加文件到暂存区
git add .
# 从暂存区回撤到工作区
git rm --cached xxx
# 暂存区提交版本库
git commit -m "注释"
# 查看版本库版本
git log
可能遇到的问题点:
vim 命令模式 插入模式 末行模式
在git commit时,忘记了加-m参数
修改完毕之后,按esc键,退出插入模式,进入命令模式,再同时按shift+:,进入末行模式。
输入wq,保存退出
4、git远程仓库使用
为了能够方便进行代码的传递和共享,需要使用git远程仓库。
**
远程仓库必须要有一个仓库地址
**
国外仓库:github、gitlab
国内仓库:**
gitee
**、coding...
注册一个gitee的账号,并登录
4.1、创建远程仓库
# 添加远程仓库地址
git remote add origin https://gitee.com/liuxiangxiangaqua/joint-projects
# 查看远程仓库地址
git remote -v
# 删除远程地址
git remote remove origin
4.2、上传本地仓库到远程
# 推送远程并设置分支为主分支 后续推送直接git push
git push -u origin "master"
执行推送命令后,需要输入gitee的账号和密码
4.3、开源仓库
企业中的代码,不要进行开源,可以设置哪些账号可以查看和使用
4.4、获取远程仓库
克隆:第一次完整的获取到所有的仓库信息 git clone xxxx
拉取:在原有基础之后,获取变更后的信息 git pull
①克隆远程项目
git clone https://gitee.com/liuxiangxiangaqua/joint-projects
②拉取远程代码
git pull
5、git对比操作
对比不同版本或者不同工作区域代码的差别
①工作区与暂存区的差异对比
git diff xxx
②暂存区与版本库的差异对比
git diff --cached xxxx
git diff --staged xxxx
③工作区与版本库的差异对比
git diff master
6、git回撤操作
①暂存区回退到工作区 发现提交错了,退回一步
git reset HEAD 文件名
# 撤销上一个git add . 操作所有的文件
git reset HEAD
②工作区撤销回上一次的版本库
注意:该操作 如果没有提交版本库 不存在版本库的中代码就会被全部删除 不可逆
git checkout --文件名
7、git恢复操作
恢复文件操作 恢复到对应版本
git checkout (commit id) <指定文件>
恢复版本操作
git reset --hard (commit id)
git reset --hard HEAD^ (返回上一个版本)
git reset --hard HEAD~<num> (返回上几个版本)
#显示操作记录,可以回到当前版本
> git reflog
8、分支使用 多人协作开发
分支是一个副本,操作分支,不会影响主要分支代码。当需要做一些修改较多,测试性操作。就可以开一个新分支,完完成测试之后,再合并主要分支。
# 查看当前所在分支 及其所有分支 *代表当前所在分支
git branch
# 查看所有分支及其远程分支 -a all
git branch -a
# 创建新分支 基于当前分支
git branch 新分支名称
# 切换分支
git checkout 分支名称
# 创建分支并切换到新分支
git checkout -b 分支名称
# 合并分支 在当前分支合并其他分支
git merge 合并分支名称
# 删除分支
git branch -d 分支名称
9、远程仓库共享协作开发
为了方便多人协作开发,使用线上远程操作具有操作权限。添加仓库成员。
10、冲突解决
提交之前先拉取,拉取出现冲突根据提示解决冲突,然后再提交。
git pull => git push
注意如果冲突代码,自己无法确定保留哪一份,需要和对应的开发者去对接。
11、开发使用技巧
当前正在开发新的功能,在dev分支开发。突然一个需求,修复一个线上bug。
问题:新开发的功能,还未完成,无法提交。bug修复还必须现在进行,导致现在没写完的代码,无处保存
可以通过git stash 保存未提交的代码
# 保存未提交代码
git stash
# 获取到之前未提交的代码
git stash pop
版权归原作者 前端青山 所有, 如有侵权,请联系我们删除。