一、版本管理工具干什么用的?
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. 安装
Ⅱ. 安装GIT环境---Linux
1. CentOS下 软件包管理器
2. git --help查看帮助
3.ubuntu下安装 同理 apt-get -update 更新源 apt-get install git 安装git
四、注册账户
i. 登录官网
ii. 注册
iii. 选择套餐
iv.发送验证邮件
v. 登录帐号看到自己的项目
五、新建一个项目
i. 注意点
ii. 创建完成
六、Linux下检出项目到本地
i. Clone or download
ii. 克隆到本地
[if !supportLists]iii. [endif]检出到本地之后可以在本地工作区开发提交...
七、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