Git程式碼管理流程(分支、fork、tag)
阿新 • • 發佈:2018-12-05
我們使用Git做程式碼管理時,經常會出現這種情況:專案需要穩步迭代升級(暫且叫做標品)的同時,定製化的需求接憧而至。然而定製化內容(不屬於正常迭代升級的範圍),我們該如何處理?下述如我想到的幾種方式:
方式一:做邏輯分支
優點:程式碼無需單獨管理,省事省力
缺點:定製內容一旦過多,對程式碼的整潔性會有很大的衝擊
方式二:定製化專案,單獨建立新的工程
優點:對標品迭代升級的專案沒有任何干預和影響
缺點:定製化專案一旦需要標品最新的內容做升級,得手動同步
方式三:迭代升級使用分支管理,定製化使用fork專案方式管理
優點:對標品迭代升級的專案沒有影響,且升級比較容易
缺點:fork的定製化專案依賴於標品某個時刻,如若強依賴標品的升級囫圇吞棗,選擇性升級的靈活性不高
這裡,我推薦的是方式三,從某些方面說,這種方式可以做到對程式碼最大的保護,<下述以gitlab為例>
說明
大的原則:
- 定製化需求,使用fork<新專案>方式管理<需要強調的是,在做定製化服務前,需要明確和說明,我們只接受定製化專案合併更新標品程式碼,不接受標品合併更新定製化專案>
- 標品正常迭代,使用分支方式管理
- release版本釋出後,要打相應的tag,便於回溯~
新專案處理 <fork>
fork專案:
- 第一步:在標品專案上進行fork操作,名稱空間(namespace)選擇新專案放置的空間
- 第二步:fork完成後,進入新fork完成後的專案,在Settings -> General中分別修改
- General project settings中的Project name為新名稱
- Archive project中的Rename repository中的path為新地址(同新名稱)
更新專案:
- 第一步:在新專案中,新增源專案(標品)地址資訊 <如果已經新增,可以跳過>
# 新增標品地址
git remote add upstream [email protected]<address> :<namespace>/<name>.git
# 檢視是否新增成功
git remote -v
- 第二步:更新專案
# 更新argus-fe專案內容
git fetch upstream
# 合併argus-fe的同步
git merge upstream/master
分支說明
master釋出版本時,首先修改package.json
中version,命名方式用語義化的版本號semver進行控制,
即X.Y.Z (主版本號.次版本號.修訂號)
- 主版本號:當你做了不相容的 API 修改,或大的功能需求
- 次版本號:當你做了向下相容的功能性新增
- 修訂號:當你做了向下相容的問題修正
修改完後,執行npm run changelog
,生成changelog一併提交!**補充,**關於changelog可檢視:Git提交資訊規範化
分支 | 說明 |
---|---|
master | 標本定版主分支 |
develop | 開發穩定版本(測試,待上線) |
hotfix-xx | 指定bug修復版本(臨時分支,處理完後可選擇刪除或保留) |
feature-xx | 功能開發分支(開發完成後可選擇刪除或保留) |
- master分支,只允許merge develop|hotfix分支程式碼
- develop分支,只允許merge master|feature-xx分支程式碼
- feature-xx分支,只允許merge develop分支程式碼
- hotfix-xx分支,只允許merge master分支程式碼
tag說明
命令操作: 更多操作命令請檢視Git 標籤
# 列出所有tag
git tag -n
# 檢視tag資訊
git show <tag_name>
# 建立tag
git tag -a <tag_name> -m <tag_describe>
# 推送到遠端
git push origin <tag_name>
# 刪除tag
git tag -d <tag_name>
# 刪除遠端
git push origin --delete tag <tag_name>