代碼健全性保障:上市審查中的 Git 提交記錄整理方案(核心功能提交篩選流程)
一、背景與目的
我司正處于上市籌備階段,券商需對核心系統進行 Git 代碼審查,并基于提交記錄生成測試報告。由于原始提交記錄包含大量細節性修改(如 Bug 修復、格式調整等),不利于清晰呈現核心功能與模塊的開發脈絡,因此需要通過整理,篩選出與大功能、大模塊相關的關鍵提交記錄,確保審查過程中能準確反映系統開發的核心邏輯與迭代路徑,同時完全保留代碼完整性,不影響系統實際運行與后續開發。
二、核心目標
創建一個 “凈化版” 臨時分支,僅保留與核心功能、大模塊相關的關鍵提交記錄(隱藏細節性提交),且代碼內容與原始分支完全一致,既滿足券商審查對提交記錄的清晰性要求,又不修改原始代碼倉庫的歷史,保障代碼健全性與可追溯性。
三、前期準備
1. 確保工作區干凈
操作前需提交或暫存所有未完成的修改,避免在整理過程中產生沖突,保障代碼狀態穩定:
# 檢查工作區狀態,確認是否有未提交的修改git status# 如有未提交內容,先暫存并提交(備注需體現“上市審查準備”,便于追溯)git add . && git commit -m "上市審查準備:暫存當前未提交修改"
2. 梳理關鍵提交記錄
與團隊共同梳理核心系統的功能模塊清單(如用戶系統、交易模塊、風控模塊等),并對照原始提交歷史,篩選出與各模塊開發、核心功能實現相關的關鍵提交,記錄其哈希值(按時間從舊到新排序):
# 以圖形化簡潔格式展示完整提交歷史(包含分支關系與提交哈希)git log --oneline --graph --decorate
示例梳理結果(假設核心模塊相關提交為 b2
、b4
、b6
):
b7 細節優化:調整日志格式(非核心,隱藏)b6 交易模塊:完成實時清算功能(核心,保留)→ 哈希:b6b5 Bug修復:修復表單校驗異常(非核心,隱藏)b4 用戶系統:實現身份認證與權限管理(核心,保留)→ 哈希:b4b3 樣式調整:優化后臺頁面布局(非核心,隱藏)b2 基礎框架:搭建核心系統架構(核心,保留)→ 哈希:b2b1 初始化:創建項目倉庫(基礎,保留或隱藏根據審查需求)
四、詳細操作步驟
步驟 1:基于原分支創建審查專用臨時分支(保留代碼)
從核心系統所在的主分支(如 main
或 master
)創建一個臨時分支,用于存放整理后的提交記錄,確保原始分支不受影響:
# 基于當前主分支創建審查專用分支(命名建議包含“review”或“listing”標識)git checkout -b listing-review-clean
- 此時新分支
listing-review-clean
與主分支代碼完全一致,提交歷史也完全相同,為后續整理奠定基礎。
步驟 2:清空臨時分支的提交歷史(保留代碼)
將臨時分支的提交歷史重置到 “無任何提交” 的初始狀態,但保留工作區所有代碼(核心操作,保障代碼不丟失):
# 查找主分支的第一個提交(初始提交)的哈希值(如b1)# 若不確定,可通過以下命令查看最早的提交記錄git log --reverse --oneline | head -1 # 輸出示例:b1 初始化:創建項目倉庫# 重置臨時分支到初始提交之前(徹底清空歷史,僅保留代碼)git reset --soft b1~1
-
--soft
參數是關鍵:僅清空提交歷史記錄,工作區的代碼文件、文件夾及暫存區狀態完全保留,確保核心系統代碼健全性。 -
執行后,
git log
會顯示 “無提交記錄”,但通過ls
或文件管理器查看,所有代碼文件均完整存在。
步驟 3:重新應用關鍵提交(重建核心歷史)
按時間從舊到新的順序,使用 git cherry-pick
將篩選出的核心提交逐個 “復制” 到臨時分支,重建與核心功能相關的提交歷史:
# 1. 先應用最早的核心提交(如基礎框架搭建b2)git cherry-pick b2# 2. 依次應用后續核心提交(如用戶系統開發b4)git cherry-pick b4# 3. 最后應用最新的核心提交(如交易模塊清算功能b6)git cherry-pick b6
若出現沖突(如提交間存在依賴關系):
- 終端會提示沖突文件路徑(如
src/trade/clearing.js
),打開文件找到沖突標記:
<<<<<<< HEAD(當前臨時分支狀態)[本地代碼]=======[待應用提交b6的代碼]>>>>>>> b6(交易模塊:完成實時清算功能)
-
與團隊相關開發人員確認代碼邏輯,保留正確的實現(需符合核心系統功能設計),刪除沖突標記。
-
標記沖突已解決:
git add src/trade/clearing.js # 替換為實際沖突文件路徑
- 繼續完成當前提交的應用:
git cherry-pick --continue
- 若需放棄本次操作(如沖突無法短時間解決):
git cherry-pick --abort # 回到操作前的臨時分支狀態,重新梳理提交順序
五、驗證與確認
1. 檢查提交歷史(僅保留核心記錄)
# 查看臨時分支的提交歷史,確認僅顯示篩選的核心提交git log --oneline --graph
- 預期輸出(按時間順序排列的核心提交):
b6 交易模塊:完成實時清算功能b4 用戶系統:實現身份認證與權限管理b2 基礎框架:搭建核心系統架構
2. 確認代碼完整性與一致性
# 對比臨時分支與主分支的代碼差異(確保無任何區別)git diff main # 替換為核心系統所在的原分支名稱
- 若命令無輸出,說明代碼完全一致,核心系統功能不受影響;若有差異,需排查
cherry-pick
過程是否有誤。
3. 功能驗證(關鍵步驟)
由于涉及上市審查,需通過自動化測試或人工驗證,確認臨時分支的代碼可正常運行,核心功能模塊無異常:
# 示例:執行項目測試腳本(根據實際項目調整)npm run test # 或其他測試命令,確保所有核心測試用例通過
六、審查配合與后續管理
1. 提供審查分支
將整理后的臨時分支 listing-review-clean
推送到遠程倉庫(如需券商直接查看):
# 推送臨時分支到遠程(命名建議與本地一致,便于識別)git push -u origin listing-review-clean
- 告知券商審查人員:該分支僅包含核心功能相關提交,代碼與生產環境完全一致,可用于生成測試報告。
2. 保留原始分支與操作記錄
-
原始主分支(如
main
)的完整歷史需妥善保留,作為代碼開發的原始憑證,滿足上市審查的追溯要求。 -
建議將本次整理過程(包括篩選的核心提交清單、操作時間、執行人)記錄在項目文檔中,便于后續審計。
3. 后續更新(如審查需補充提交)
若券商審查過程中要求補充其他核心提交,重復步驟 3,將新增的關鍵提交哈希應用到臨時分支:
git checkout listing-review-clean # 切換到臨時分支git cherry-pick 新增核心提交哈希 # 如補充“風控模塊”相關提交b8git push origin listing-review-clean # 推送更新
4. 審查完成后處理
審查結束后,臨時分支可保留作為歷史記錄,或根據需要刪除(不影響原始代碼):
# 如需刪除本地臨時分支git checkout main # 先切換到其他分支git branch -D listing-review-clean# 如需刪除遠程臨時分支(確認不再需要后)git push origin --delete listing-review-clean
七、方案優勢
-
代碼健全性保障:全程保留核心系統代碼,與原始分支完全一致,不影響功能運行。
-
提交記錄清晰化:僅展示與大功能、大模塊相關的關鍵提交,便于券商快速理解開發脈絡。
-
安全性高:不修改原始倉庫歷史,所有操作可追溯,符合上市審查對代碼管理的規范性要求。
-
靈活可控:可根據審查需求隨時補充或調整提交記錄,適應不同階段的審查要求。