前言
Git是当前最好的版本控制软件,本文基于Android端当前项目分支管理,不一定适用于所有人和所有项目,可以进行了解以及在这基础上改造,来实现对自己项目的管理和控制
为什么要进行版本控制
当前开发,都是多人同时操作,对于同一部分文件和文件需要同步操作和处理,为了规避冲突进行分布式操作,再讲分布式操作进行合并,解决冲突后合到一起,整合所有人的迭代功能
了解git 中rebase与merge的区别
Rebase 顾名思义,Re - base ,重新以某一个分支为起点基准,此操作会先保存本分支变更的commit
再将Re-base <master> 中更新的内容添加到自己分支后,再将保存的变更commit挨个续到新更新内容后面
Merge 是合并commit ,分支搓揉合在一起
Rebase可以看作,单线程按优先级同步添加commit ,有次序性
Merge 多线程,更关心合并后的结果
常规操作
-
从master切出修复问题分支(一帆风顺,如若单人开发)
git stash 如果有需要缓存本地数据到暂存堆栈,执行该命令,需要时再git stash pop弹出内容
git checkout master //切换到主分支
git checkout -b bugFix //从主分支切出一个新分支 bugFix,完全对标主分支
.... //代码操作 修复一系列bug
git commit -m "修复bug" //提交修复bug操作
git push --set-upstream origin bugFix //将本分支推到远程名为bugFix分支
git stash pop // 从暂存堆栈弹出之前临时写的内容
master 本地 o/master 本地的远程备份 master远程
git fetch //同步master远程到本地远程备份 o/master
git pull --rebase // 以rebase 方式,将本地远程备份 o/master 内容 合并到本地 master
案例中忽略了add 操作,每次commit前自行添加
2. rebase master操作(双线程,并行开发)
远程master 有其他commit ,本地master需要同步这部分内容到自己的分支,但当前自己分支无需合并到master
git fetch // 远程master --> 本地远程备份o/master
git pull --rebase // 本地远程备份o/master --> 本地master
git checkout bugFix //切换到自己的bug分支
git rebase master //重新以本地master为基准同步commit(实际操作merge或者rebase都是以本地与本地进行合并的,实际上git 远程操作是外挂功能,无协同工作,不用也没事,电脑损坏除外)
...
while(Conflict) { //出现冲突解决冲突
git status //查看冲突日志
... //解决冲突
git add . //添加解决处理到git
git rebase --continue //继续下一个commit rebase
}
...
git push -f //rebase master如果之前有远程分支,需要强制性冲掉远程代码,由于rebase变更了commit的正常次序,你的远程分支和你的本地分支基因序列已经不一样的
基于远程 clone了一个分支
git commit 进行了多次提交 完成了foo功能,但foo并未测试通过
发现master远程存在其他commit 已经合并到master,bug修复,foo也需要修复
git fetch ,同步本地master后
git rebase master //基于foo rebase 本地master
结束语
才疏学浅,敬请见谅!
这里只介绍了,使用git 最基本的操作常用命令,主要以rebase 方式,进行分支操作和合并(在merge前先rebase),不一定适用所有项目,切记切记!
资源
github开源练手项目 https://learngitbranching.js.org/?locale=zh_CN
git学习网站 廖雪峰Git学习