repo下的本地开发流程
1.1 单分支开发:
1 本地新建工作目录并初始化repo库: repo init;
2 下载代码(只取服务器当前分支): repo sync -c;
3 创建本地分支: repo start localDevelop --all; (不带all的话只更新当前目录的git 库,该命令当分支不存在时会创建新的分支,但是该命令和git checkout -b有区别,后者会在当前本地分支的基础上进程创建新的本地分支,而repo命令总是基于清单文件中为项目指定的分支创建新的分支)
4 基于localDevelop分支进行代码修改,修改中可能需要建立私有分支,但统一使用localDevelop分支提交;
5 将所有库切换到localDevelop分支,repo sync同步,同步过程中如果出现冲突,进入冲突的库,手动解决冲突后,使用git add命令标记冲突解决,然后执行git rebase --continue,再次repo sync未完成的同步。
1.2 双分支开发:
1 本地新建工作目录并初始化repo库: repo init;
2 下载代码: repo sync -c;
3 创建本地开发分支: repo start localDevelop --all;
4 创建本地同步服务器分支: repo start localSync --all;
5 切换到localDevelop分支进行代码修改,提交到本地库;
6 需要同步的时候,统一切换到localSync分支repo sync,由于localSync分支本地没有做任何修改,所以同步肯定不会出现冲突;
7 本地切换到localDevelop分支,repo forall -p -c "git rebase localSync", 将本地开发分支rebase到同步分支上,使用rebase的原因是减少merge节点。在执行rebase之前,可以先休整本地的历史提交记录,维护一个简洁清晰的版本图。
repo forall -c 这个命令会遍历所有的git仓库,并在每个仓库执行-c所指定的命令(这个被执行的命令就不限于仅仅是git命令了,而是任何被系统支持的命令,比如:ls 、 pwd 、cp 等等的 )
8 rebase过程中出现的冲突仍然需要手动解决。
双分支的好处在于,可以随时同步服务器修改,自己决定何时合入自己的修正,相对于repo sync中的隐式rebase,条理更清晰。