代码管理的思考

git管理代码仓库遇到的一些问题git

多人多项目同根目录的问题

root
--project1
--project2
...

固然这种状况其实不该该出现的,可是因为历史缘由,多个项目有公用的一些东西,每一个项目都很庞大,致使拆分比较费劲,短时间没法作。代码发布流程是内网->dev->master,各个项目每周有例行发布时间,可是因为测试进度不一致致使的代码被别的项目带出,那么应该如何平衡多个项目的发布问题?测试

解决方案1

这里有个前提:每次开发新需求都是从master上拉取本身的开发分支。这样咱们在测试内网是没问题,而后在往dev合并的时候要注意,只须要把你的代码merge到dev分支,而不要同步dev到你的开发分支,固然在测试期间要保持你的开发分支纯净(不要修改代码,修改代码另外开一个新分支,毕竟git中创建分支是很方便的)。在dev测试经过以后,就能够把你的开发分支合并到master,此时master就只有你修改过的代码。大致流程以下:
image.pngcode

解决方案2

保证合并到dev的代码是立刻会发的(好比今晚或者两天内),那么全部的项目都测试完成再统一进行提交到master。或者说排队发布,只要有一个没发出去,那么别的项目就不能够发到dev。blog

代码拆分

基于以上的项目,咱们能够拆分出某个独立的项目,通常来讲这些独立的项目没有依赖公共文件,项目所在文件夹也是独立的,所以咱们就能够直接拆分出来,而且要把他的git记录单独提取出来。
建立新分支开发

git check -b new branch

剥离对应文件夹同步

git filter-branch -f --prune-empty --subdirectory-filter Dir

这样根目录下就只会存在你本身的项目,并且该项目的git记录也都存在并且不包含别人的提交记录。it

关于代码回滚

咱们在开发中可能会不当心提交了不应提交代码,而此时又合并到了dev ,你们想到的可能就是代码回滚,可是要注意几个问题:
1.回滚记录中有没有别人提交的代码
2.回滚有可能遇到合并记录的时候,会回滚失败
3.回滚要不要把以前的commit清除掉
。。。
这里着重考虑1,2点问题,若是没有遇到合并记录,那么咱们能够单独拉取一个分支,回滚,而后经过cherry-pick拉取别人提交记录,而后再覆盖原来的分支,可是若是别人有不少提交记录的时候,工做量就太大了。因此其实最好就是diff现有代码和线上分支代码,把不应提交的干掉,再从新提交一个commit,这样不用关注别人的提交,也保证每次提交记录的保存。固然回滚的时候能够选择使用revert,这样也会保持提交记录,可是依然会把别人的提交覆盖掉。ast

相关文章
相关标签/搜索