1. 程式人生 > >Git程式碼管理流程(分支、fork、tag)

Git程式碼管理流程(分支、fork、tag)

我們使用Git做程式碼管理時,經常會出現這種情況:專案需要穩步迭代升級(暫且叫做標品)的同時,定製化的需求接憧而至。然而定製化內容(不屬於正常迭代升級的範圍),我們該如何處理?下述如我想到的幾種方式:

方式一:做邏輯分支
優點:程式碼無需單獨管理,省事省力
缺點:定製內容一旦過多,對程式碼的整潔性會有很大的衝擊

方式二:定製化專案,單獨建立新的工程
優點:對標品迭代升級的專案沒有任何干預和影響
缺點:定製化專案一旦需要標品最新的內容做升級,得手動同步

方式三:迭代升級使用分支管理,定製化使用fork專案方式管理
優點:對標品迭代升級的專案沒有影響,且升級比較容易
缺點:fork的定製化專案依賴於標品某個時刻,如若強依賴標品的升級囫圇吞棗,選擇性升級的靈活性不高

這裡,我推薦的是方式三,從某些方面說,這種方式可以做到對程式碼最大的保護,<下述以gitlab為例>

說明

Git 分支管理流程

大的原則:

  • 定製化需求,使用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>