git高级操作--回滚
回滚
git reset --hard 版本号
查看文件,文件内容变成指定版本的内容
回到指定的版本
git reflog
git reset --hard 版本号
- git出现
Unlink of file '' failed. Should I try again? (y/n)
实战遇到问题- 原因:这是因为有后台进程在使用正在拉取或者提交的文件,git暂时没有权限去操作该文件;
- 解决办法:关闭其他正在操作相关文件的程序,再输入y,继续提交/拉取 文件即可
从暂存区回退到工作区
git reset HEAD 文件名
从工作区回退到未修改状态
Git checkout -- 指定文件名
- 文件的修改恢复到之前没有修改的状态
从版本库回退到暂存区
git reset --soft 之前提交的版本号
- 一般很少使用,注意版本号不要写错
区域的总结
- 其中只有git reset --mix 前版本号没有经过测试
git高级操作--分支
- 版本之间关系
- 假设C2是以来于C1又创建的版本
- C2实际存储C1中发生改变的文件和C1中没有的新文件
- 提取C2是C1+C1修改+C1新增
- 假设C2是以来于C1又创建的版本
- 分支的存在意义
- 拿我们公司的业务来说,核心业务是C3,就是每个医院都要用的核心业务代码
- A医院想要A业务但是不想要B业务,我们从C3出发,在原有核心功能的基础上加上A功能即可,形成C4版本满足了A医院的开发
- B医院想要B业务但是不想要A业务,假设我们不分支,我们从C4出发,在原有功能的基础上不但加上B功能还加上了A功能,形成C5版本不满足了B医院的要求
- 这样我们还从C3出发,分出一个分支,在原有核心功能的基础上加上B功能即可,形成C5版本满足了B医院的开发,又不影响A医院的使用
- 分支的重要应用
- 线上代码的bug的修复工作
- 在已上线的版本中,新开出来一个分支,用于bug的修复工作,修复工作完成后将代码合进主代码分支(一般为master),在次上线即可
- 线上代码的bug的修复工作
查看分支
git branch
创建分支
git branch dev1
切换分支
git checkout dev
- 在dev分支上的代码修改并不影响master上的代码
合并分支
git checkout master
git merge bug
删除分支
git branch -d bug
线上bug的解决步骤
- 创建新bug分支--切换到新bug分支--代码修复--切换回master分支--合并bug分支--最后删除bug分支
git高级操作--冲突
冲突的产生原因
我们在开发新功能的时候,线上出现了bug,这样的话,我们master切出来一个新分支用于修复bug,修复完之后合并到master中,但是我们新功能分支依赖的还是原master的代码这样,并不知道并入了bug分支的代码,当我们dev分支想要合并到master的时候,就会产生冲突。
冲突产生后文件的变化
解决冲突的方式
- 手动修复
- 将代码冲突的部分进行修改,在次add/commit即可
git工作流
- master
- 正式线上运行的代码
- dev
- 开发测试的代码
- 流程图