為了規范開發者提交格式,平臺提供推送規則檢查服務,支持自定義檢查規則,對未推送的提交進行檢查。本文主要介紹了如何創建推送規則,以及觸發規則后的展示。
創建推送規則
作為庫管理員,點擊左下角設置進入代碼庫設置頁面,找到推送規則設置:
單擊新建推送規則,設置規則參數:
重要僅支持針對全庫所有分支啟用檢查規則。
提交注釋:即 Commit message,規則請使用正則表達式書寫,提交注釋需符合正則表達式才允許推送,為空表示允許所有提交注釋。如何書寫正則表達式。
提交郵箱:即
git config
設置的郵箱,規則請使用正則表達式書寫,提交作者郵箱需符合正則表達式匹配才允許推送,為空表示允許所有郵箱。如何書寫正則表達式禁止強制推送(Force Push):強制推送即強制用本地代碼覆蓋遠程倉庫的代碼,由于會直接覆蓋遠程的提交,特別是在版本沖突的情況下,可能造成代碼和提交記錄丟失,需謹慎使用。如希望排查是否因為成員強制推送導致提交記錄丟失,可通過代碼庫動態篩查強制推送事件以追溯操作人。
為了避免由于強制推送導致的代碼丟失問題,可以通過開啟禁止強制推送對操作進行限制。
當開啟禁止強制推送,推送的本地代碼和遠端存在分叉時,無法通過 git push -f 的方式強行推送本地代碼,避免服務端代碼被覆蓋。
說明當已開啟禁止強制推送,但是本地代碼和遠端服務器代碼無分叉時,此時即使使用 git push -f 命令進行推送,效果也和
git push
一致,可以推送成功。代碼屬主檢查:在開始使用 Git 進行版本管理之前,需要先進行用戶配置。
git config --global user.name "您的名字" git config --global user.email "您的郵箱"
提交記錄的作者(Author)與提交者(Committer)的區別
Git 允許重寫歷史和代表他人提交代碼:在查看歷史提交記錄時,通常顯示的是作者(Author)。作者與代碼貢獻者直接相關,是代碼統計的歸屬依據。為了確保代碼貢獻統計的準確性,需要規范提交代碼的屬主與服務端當前登錄用戶的對應關系。
通常情況下,提交者Committer并不對用戶暴露:只有指定
git log --format
(例如format=fuller)時才會展示。提交者代表著這個提交記錄Commit最終提交的人(提交時git config user.name
及git config user.email
)。在使用
git commit
命令時,可以通過 `author` 參數指定提交記錄的貢獻者:在開源社區中,即使未直接使用某人的代碼,但使用了其創意,也會將其列為作者以示尊重。通常情況下,首次生成的Commit中,Author和Committer是同一人。然而,當其他人通過git cherry-pick
、git rebase
、git commit --amend
、git filter branch
和git format patch
等命令重寫 Commit時,新的Commit的Author保持不變,而Committer則變為執行該操作的用戶。簡而言之,Author被視為原始貢獻者,而Committer是生成Commit的人。Codeup支持針對Author和Committer對當前登錄用戶已驗證的主郵箱做檢查:若郵箱信息無法匹配,可以警告或限制其推送,以保證代碼貢獻屬主的準確性,避免由于無法匹配用戶導致的貢獻量計算失真。
繼承企業級規則
繼承自企業的規則不可編輯和刪除,僅支持查看,如需修改請聯系企業管理員,請參見企業級代碼庫管理設置 。
推送時檢查
假設規則設置如下:
頁面操作
當提交時注釋不符合已設置的規則時,提交將被拒絕:
當提交郵箱不符合規則時,提交也會被拒絕:
合并請求時同理。
命令行操作
當提交注釋不符合規則時,會出現①處報錯:
當提交郵箱不符合規則時,會出現②處報錯:
當代碼屬主檢查失敗,出現③處報錯:
修改已提交的歷史注釋
請參見:如何修改提交歷史信息 ?