一、版本管理工具干什么用的?
i. 备份文件 作用同U盘 网盘
1. 保存每天的成果 若是本地文件丢失 损坏 找备份
2. 如 打游戏时候的存档
ii. 记录历史
1. 网盘 U盘存储的是文件最新状态 历史操作没有
2. 作用同 history命令 找到历史操作的版本 记录 修改时间 修改内容等(提交时候的备注)
iii. 回滚到历史版本
1. 若是当前提交了不想要的操作 可以找到历史版本 把状态恢复到之前操作过的任意历史的状态
iv. 托管文件可以多端共享
1. 效果类似于 icloud云备份 可以在不同的设备上 拿到相同的文件
2. 场景一在公司提交了代码之后 回到家 登陆自己的账户 pull 到本地
3. 管理员创建仓库 搭建好项目环境之后 团队成员 pull到自己的设备 共同开发
二、版本管理工具发展历史
三、GIT下载和安装
i. 安装GIT环境---windows
1. 下载客户端 https://desktop.github.com/
2. 安装
ii. 安装GIT环境---Linux
1. CentOS下 软件包管理器
2. git --help 查看帮助
3. untu下安装 同理 apt-get -update 更新源 apt-get install git 安装git
4. Git --help查看帮助
四、注册账户
i. 登录官网
ii. 注册
iii. 选择套餐
iv. 发送验证邮件
v. 登录帐号 看到自己的项目
五、新建一个项目
i. 注意点
ii. 创建完成
六、Linux下检出项目到本地
i. Clone or download
ii. 克隆到本地
iii. 检出到本地之后 可以在本地工作区 开发 提交...
七、Linux环境下第一次提交项目
i. 工作区修改文件 wq保存退出
ii. git status 查看工作区状态
iii. git add 对文件建立 跟踪 查看状态
iv. git commit 提交
v. 提交之后 git status查看工作区状态 (目前只是在本地工作区的操作 还未提交到github)
vi. git push到 远程github上
vii. 登录github查看 推送成功
八、windows环境下检出项目和提交项目
i. 安装好本地客户端之后 登录 本地客户端 在github上
ii. 选择本地工作区目录
iii. 克隆到本地之后
iv. 在本地 编辑器打开文件
v. 本地新建文件 编辑
vi. 本地工作区修改文件 提交 同步
vii. 同步到github
九、关于代码冲突
i. 解决冲突 团队合作 代码冲突 工具无法判断 取舍
1. Linux下如何解决冲突
a) git pull 把最新的代码拉下来 合并冲突
b) git status 查看当前工作区状态
c) 查看变更记录 git diff
d) 打开冲突文件 人为解决冲突
e) 本地工作区解决完冲突之后 git status git add git commit git push 推送到github
f) 如果有后续操作 本地工作区 需要先将git pull 将远程上的最新的文件拉到本地 再进行后续操作
2. Windows下如何解决冲突?
a) windows下冲突
b) 本地编辑器打开冲突文件 先手动解决冲突
c) 同步
或者是
十、回滚到历史版本
a) 场景:新老同事 最新版本的代码如果修复的话代价太大 直接恢复到之前的版本
b) 回滚
i. git log 查看文件历史提交
ii. 需要回滚到哪个时间点 复制commit id git reset --hard commit id
hard:是当前版本的指针 这个指针指向哪个时间点的 commit id 就相当于代码回退到那个时间点的状态
iii. git reflog 列出当前版本之前的所有版本号
iv. 还原到最新版本
十一、建立里程碑 (软件上的版本号)
i. 里程碑:软件上的版本号 每一个版本号表示一段开发的完结 以及下一阶段工作的开始 软件发布之后 会带着对应的版本号
ii. 建立里程碑 方便于把一个完整的软件发布出去 也方便于快速的定位某一个版本的某个问题
1. 登录github
2. 后期维护的时候 找到对应的版本 可以下载源码 可以回退等等
十二、分支开发之分支合并
i. 应用场景:新反馈了一个bug但是当前master(主)分支已经推送了新的功能的代码 于是呢 就不能在主分支发布 有可能把没测试过的代码带到外面去 创建新的分支 以已经发布的代码为基础修复bug 修复之后 再合并分支
ii. 创建新的分支 当前工作区切换到分支
iii. merge 合并分支
十三、分支开发之分支合并
十四、关于多人合作
i. 多用客户端和工具 少用命令行 除非是在Linux服务器上直接开发
ii. 每次提交前 diff自己的代码 以免提交错误的代码
iii. 下班回家前 整理好自己的工作区(哪些代码是必须的 哪些是调试代码等等)
iv. 并行的项目 使用分支开发
v. 遇到冲突的时候 搞明白冲突的原因 千万不要随意的丢弃别人的代码
vi. 产品发布之后 记得打tag 方便将来拉分支修bug