代碼管理的思考

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

相關文章
相關標籤/搜索