版本管理-git
28:版本管理-git
一、版本管理
- 什么是版本:一个项目从立项开始,到项目上线中间的每次修改更新迭代都是版本
- 为什么要管理:为了能方便的进行版本回退,检索,比对,检查等操作,所以要进行管理
- 如何管理:
- 传统的管理方式:每次产生版本,当做一个文件,存起来
- 在线管理:存网盘
- 专业的版本管理工具:将文件转成源码,初始保存一个版本后,每次产生新的版本只记录修改了的部分,未修改的部分不重复记录
- 常见的版本管理工具的管理方式
- 集中式:每个可能会产生版本的客户端,连接一台共同的服务器,将每次产生的版本信息,都上传到这个服务器,由服务器统一管理
- 如果和服务器连接断开,所有客户端无法工作
- 代表软件:SVN
- 分布式:每个可能会产生版本的客户端,都可以将版本信息,存储在本地,不需要上传到服务器。
- 可扩展成,选择性的上传到服务器
- 代表软件:git
- 集中式:每个可能会产生版本的客户端,连接一台共同的服务器,将每次产生的版本信息,都上传到这个服务器,由服务器统一管理
二、版本管理工具的常见概念
- 工作区:正在进行修改的文件所在的区域
- 暂存区:部分文件修改完成后,准备上传,还没有正式上传,在排队等待的区域
- 版本库(本地仓库):将暂存区中的文件提交成一个版本后,这个版本信息的存储区域
- 远程仓库(线上,在线):将本地版本库上传到线上特定平台,线上平台提供的版本的储存区域
三、git的安装和使用
安装
- 下载:https://git-scm.com/downloads
- 安装:next安装法
- 打开git的命令窗口
- windows:任意文件夹空白位置,右键,git bash
- MAC:终端
- 测试:
- 在git的命令窗口中输入:
git --version
,可以看到版本号
- 在git的命令窗口中输入:
基础使用流程(本地仓库)
- 当前设备第一次使用git,需要先进行用户信息配置,打开git的命令窗口,输入
- 配置用户名:
git config --global user.name "自己的名字"
- 配置邮箱:
git config --global user.email "自己的邮箱"
- 配置用户名:
- 将git的命令行工具中的路径,切换到要使用版本管理工具的文件夹
- 初始化git环境
- 执行
git init
- 执行
- 可以在开发区中编写文件,修改文件,准备上传
- 将准备被版本管理工具记录的文件添加到暂存区
git add 文件或文件夹名
git add .
git add *
git add --all
git add -A
- 将暂存区中的文件提交到版本库
git commit -m "本次提交的版本信息或功能的描述"
辅助命令
- 查看状态:
git status
- 查看版本日志:
git log
- 查看操作日志:
git reflog
- 查看文件的改变:
git diff
- 回退版本:
git reset --hard 指定的版本号(前7位)
远程仓库操作
- 选择一个第三方平台,注册并登录,创建一个空仓库
- gitee.com
- github.com
- 建立本地和远程仓库的连接
git remote add 连接别名 连接地址
- 如:
git remote add origin http://gitee.com/xxxxxx/xxx.git
- 上传到远程(推到远程)
git push 连接别名 分支名
- 如:
git push origin master
- 第一次从远程获取新项目
git clone 要获取的项目仓库地址
- 如:
git clone https://gitee.com/liyangyf/sh2205.git
- clone时会自动建立和远程的连接,如果有该项目的操作权限,可以直接push,不用单独建立连接
- 在已获取的项目内更新最新版本
git pull 连接别名 分支名
- 如:
git pull origin master
- 查看当前项目内建立了哪些远程的连接
git remote -v
- 删掉远程连接地址
git remote rm 连接别名
- 注意:
- 一个远程仓库只能上传一个项目
- 不应该出现本地仓库套本地仓库的情况
- 可以通过查看当前文件夹内是否存在
.git
的隐藏文件夹,判断当前文件夹是否是一个仓库
- 可以通过查看当前文件夹内是否存在
git的分支
- 分支:项目的镜像、项目的副本、项目的拷贝,一般要对项目开发一个新功能时,都会先创建一个分支,在分支上进行开发,功能开发测试完毕后,将当前功能分支合并到主分支。
- 查看分支:
- 查看本地分支:
git branch
- 查看远程分支:
git branch -r
- 查看所有分支:
git branch -a
- 查看本地分支:
- 创建分支:
git branch 分支名
- 切换分支:
git checkout 分支名
- 合并分支:
git merge 分支名
- 将A分支合并到B分支,需要先切换到B分支
- 上传分支:
git push 连接名 分支名
- 删除分支:
git branch -d 分支名
- 强行删除:
git branch -D 分支名
- 注意:
- 在添加任何新功能或对项目进行修改之前一定要先创建并切换分支
- 合并分支之前一定要得到领导的确认之后,才能合并
注意:
- 代码冲突是一种问题,但是是一种无法避免的问题
- 尽量不要在历史版本上创建分支
- 尽量不要同时修改一个文件
- 尽量每次开发之前都先保持最新版本
- 尽量每次开发完毕后都提交到远程
- 版本管理,其实就是文件处理,以文件操作的角度来思考版本管理
团队协作时分支处理
- 负责人基于主分支(master)创建一个开发分支(dev)
- 团队成员基于开发分支(dev)创建自己的分支
- 团队每个成员之间尽量不要操作同一个文件
- 团队成员在自己的分支上完成功能开发后,上传到远程
git push origin 自己的分支名
- 线下告知负责人
- 负责人先从远程拉取组员分支
git fetch origin 要拉取的分支名
- 负责人切换到组员的分支,检查代码
git checkout 分支名
- 检查无误后,准备合并,切换到开发分支(dev)分支
git checkout dev
- 合并分支
git merge 要合并的分支名
- 如果出现冲突提示,找到冲突文件,查看冲突代码,线下沟通,决定要保留的代码,删除多余代码或提示符
- 重新提交成一个版本
git add .
git commit -m "合并了xxx分支,并解决了xxx的冲突"
- 如果还有其他组员的分支需要进行合并,从第6步开始重复
pull = fetch + merge
补充:
- 在项目的根目录中创建
.gitignore
的文件,文件内,用来列出所有不被版本管理的文件 - ssh配置
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 !
评论