Git(武佩奇版)--实战2

134 阅读3分钟

git高级操作--回滚

回滚

git reset --hard 版本号 

image.png 查看文件,文件内容变成指定版本的内容

回到指定的版本

git reflog
git reset --hard 版本号

image.png

  • git出现 Unlink of file '' failed. Should I try again? (y/n) 实战遇到问题
    • 原因:这是因为有后台进程在使用正在拉取或者提交的文件,git暂时没有权限去操作该文件;
    • 解决办法:关闭其他正在操作相关文件的程序,再输入y,继续提交/拉取 文件即可

从暂存区回退到工作区

git reset HEAD 文件名

image.png

从工作区回退到未修改状态

Git checkout -- 指定文件名

image.png

  • 文件的修改恢复到之前没有修改的状态

从版本库回退到暂存区

git reset --soft 之前提交的版本号

image.png

  • 一般很少使用,注意版本号不要写错

区域的总结

  • 其中只有git reset --mix 前版本号没有经过测试

image.png

git高级操作--分支

  • 版本之间关系
    • 假设C2是以来于C1又创建的版本
      • C2实际存储C1中发生改变的文件和C1中没有的新文件
      • 提取C2是C1+C1修改+C1新增
  • 分支的存在意义
    • 拿我们公司的业务来说,核心业务是C3,就是每个医院都要用的核心业务代码
    • image.png
    • A医院想要A业务但是不想要B业务,我们从C3出发,在原有核心功能的基础上加上A功能即可,形成C4版本满足了A医院的开发
    • B医院想要B业务但是不想要A业务,假设我们不分支,我们从C4出发,在原有功能的基础上不但加上B功能还加上了A功能,形成C5版本不满足了B医院的要求
      • 这样我们还从C3出发,分出一个分支,在原有核心功能的基础上加上B功能即可,形成C5版本满足了B医院的开发,又不影响A医院的使用
  • 分支的重要应用
    • 线上代码的bug的修复工作
      • 在已上线的版本中,新开出来一个分支,用于bug的修复工作,修复工作完成后将代码合进主代码分支(一般为master),在次上线即可

查看分支

git branch

image.png

创建分支

git branch dev1

image.png

切换分支

git checkout dev

image.png

  • 在dev分支上的代码修改并不影响master上的代码

合并分支

git checkout master
git merge bug

image.png

删除分支

git branch -d bug

image.png

线上bug的解决步骤

  • 创建新bug分支--切换到新bug分支--代码修复--切换回master分支--合并bug分支--最后删除bug分支
  • image.png

git高级操作--冲突

冲突的产生原因

我们在开发新功能的时候,线上出现了bug,这样的话,我们master切出来一个新分支用于修复bug,修复完之后合并到master中,但是我们新功能分支依赖的还是原master的代码这样,并不知道并入了bug分支的代码,当我们dev分支想要合并到master的时候,就会产生冲突。

冲突产生后文件的变化

image.png image.png

解决冲突的方式

  • 手动修复
    • 将代码冲突的部分进行修改,在次add/commit即可

git工作流

  • master
    • 正式线上运行的代码
  • dev
    • 开发测试的代码
  • 流程图
    • image.png