Git cherry-pick 與分支重置技術實現代碼健全性保障下的提交記錄精簡

代碼健全性保障:上市審查中的 Git 提交記錄整理方案(核心功能提交篩選流程)

一、背景與目的

我司正處于上市籌備階段,券商需對核心系統進行 Git 代碼審查,并基于提交記錄生成測試報告。由于原始提交記錄包含大量細節性修改(如 Bug 修復、格式調整等),不利于清晰呈現核心功能與模塊的開發脈絡,因此需要通過整理,篩選出與大功能、大模塊相關的關鍵提交記錄,確保審查過程中能準確反映系統開發的核心邏輯與迭代路徑,同時完全保留代碼完整性,不影響系統實際運行與后續開發。

二、核心目標

創建一個 “凈化版” 臨時分支,僅保留與核心功能、大模塊相關的關鍵提交記錄(隱藏細節性提交),且代碼內容與原始分支完全一致,既滿足券商審查對提交記錄的清晰性要求,又不修改原始代碼倉庫的歷史,保障代碼健全性與可追溯性。

三、前期準備

1. 確保工作區干凈

操作前需提交或暫存所有未完成的修改,避免在整理過程中產生沖突,保障代碼狀態穩定:

# 檢查工作區狀態,確認是否有未提交的修改git status# 如有未提交內容,先暫存并提交(備注需體現“上市審查準備”,便于追溯)git add . && git commit -m "上市審查準備:暫存當前未提交修改"

2. 梳理關鍵提交記錄

與團隊共同梳理核心系統的功能模塊清單(如用戶系統、交易模塊、風控模塊等),并對照原始提交歷史,篩選出與各模塊開發、核心功能實現相關的關鍵提交,記錄其哈希值(按時間從舊到新排序):

# 以圖形化簡潔格式展示完整提交歷史(包含分支關系與提交哈希)git log --oneline --graph --decorate

示例梳理結果(假設核心模塊相關提交為 b2b4b6):

b7  細節優化:調整日志格式(非核心,隱藏)b6  交易模塊:完成實時清算功能(核心,保留)→ 哈希:b6b5  Bug修復:修復表單校驗異常(非核心,隱藏)b4  用戶系統:實現身份認證與權限管理(核心,保留)→ 哈希:b4b3  樣式調整:優化后臺頁面布局(非核心,隱藏)b2  基礎框架:搭建核心系統架構(核心,保留)→ 哈希:b2b1  初始化:創建項目倉庫(基礎,保留或隱藏根據審查需求)

四、詳細操作步驟

步驟 1:基于原分支創建審查專用臨時分支(保留代碼)

從核心系統所在的主分支(如 mainmaster)創建一個臨時分支,用于存放整理后的提交記錄,確保原始分支不受影響:

# 基于當前主分支創建審查專用分支(命名建議包含“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
若出現沖突(如提交間存在依賴關系):
  1. 終端會提示沖突文件路徑(如 src/trade/clearing.js),打開文件找到沖突標記:
<<<<<<< HEAD(當前臨時分支狀態)[本地代碼]=======[待應用提交b6的代碼]>>>>>>> b6(交易模塊:完成實時清算功能)
  1. 與團隊相關開發人員確認代碼邏輯,保留正確的實現(需符合核心系統功能設計),刪除沖突標記。

  2. 標記沖突已解決:

git add src/trade/clearing.js  # 替換為實際沖突文件路徑
  1. 繼續完成當前提交的應用:
git cherry-pick --continue
  1. 若需放棄本次操作(如沖突無法短時間解決):
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

七、方案優勢

  1. 代碼健全性保障:全程保留核心系統代碼,與原始分支完全一致,不影響功能運行。

  2. 提交記錄清晰化:僅展示與大功能、大模塊相關的關鍵提交,便于券商快速理解開發脈絡。

  3. 安全性高:不修改原始倉庫歷史,所有操作可追溯,符合上市審查對代碼管理的規范性要求。

  4. 靈活可控:可根據審查需求隨時補充或調整提交記錄,適應不同階段的審查要求。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98562.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前后端聯調時出現的一些問題記錄

服務器的ip沒有設置成所有ip都能訪問的&#xff0c;或防火墻沒開跨域問題&#xff08;剛開始異源&#xff0c;有這個問題&#xff0c;主要是前端做一下配置代理&#xff0c;后端也可以配置跨域資源共享&#xff08;CORS&#xff09;&#xff09;Configuration public class Cor…

數字圖像處理-設計生成一個半球

1 實驗題目設計生成一個半球&#xff08;matlab&#xff09;。2 程序源代碼%Hemisphere clear,clc,close all %Sphere radius R1; %Set grid number n30; theta (-n:2:n)/n*pi; phi ([0,0:2:n])/n*pi/2; cosphi cos(phi); cosphi(1) 0; cosphi(end) 0; sintheta sin(thet…

mac M1上安裝windows虛擬機報錯

Parallels版本是18.0.02 mac&#xff1a;arm系統15.6.1 自動獲取windows11下載&#xff0c;安裝的時候報錯&#xff0c;藍屏&#xff0c;是因為安裝的版本不對&#xff0c;猜測原因應該是18.0.02不支持最新版的windows11&#xff0c;需要更新最新版的Parallels。 解決方案&am…

基于R語言機器學習方法在生態經濟學領域中的實踐技術應用

近年來&#xff0c;人工智能領域已經取得突破性進展&#xff0c;對經濟社會各個領域都產生了重大影響&#xff0c;結合了統計學、數據科學和計算機科學的機器學習是人工智能的主流方向之一&#xff0c;目前也在飛快的融入計量經濟學研究。表面上機器學習通常使用大數據&#xf…

第01章 初識MySQL與mysql8.0的安裝

初識 MySQL 文章目錄初識 MySQL引言一、數據庫基礎1.1 什么是數據庫1.2 表1.3 數據類型1.4 主鍵二、數據庫技術構成2.1 數據庫系統2.2 SQL 語言2.2.1 數據定義語言&#xff08;DDL&#xff09;2.2.2 數據操作語言&#xff08;DML&#xff09;2.2.3 數據查詢語言&#xff08;DQL…

【數據結構基礎習題】-1- 數據結構基本操作

一、順序表和鏈表習題 1. 順序表就地逆置#include <stdio.h> // 定義順序表結構 #define MAXSIZE 100 typedef struct {int data[MAXSIZE];int length; } SqList; // 就地逆置順序表 void reverseList(SqList *L) {int i, temp;for (i 0; i < L->length / 2; i) {…

【Java實戰?】從0到1:Spring Boot Web開發與接口設計實戰

目錄一、Spring Boot Web 基礎配置1.1 Web 起步依賴&#xff08;spring-boot-starter-web 導入與核心組件&#xff09;1.2 內置服務器配置&#xff08;Tomcat 端口、線程池、連接超時設置&#xff09;1.3 靜態資源訪問&#xff08;靜態資源存放路徑、自定義資源映射&#xff09…

房屋安全鑒定機構評價

房屋安全鑒定機構評價&#xff1a;如何選擇專業可靠的檢測服務在建筑行業快速發展的今天&#xff0c;房屋安全鑒定已成為保障建筑安全、預防事故的重要環節。面對市場上眾多的房屋安全鑒定機構&#xff0c;如何科學評價并選擇一家專業可靠的服務提供方&#xff0c;是許多業主、…

【算法專題訓練】19、哈希表

1、哈希表基礎知識 以鍵值對的方式進行數據存儲優點&#xff1a;哈希表數據結構在插入、刪除或查找一個元素時&#xff0c;都只需要O(1)的時間 哈希表設計三要點&#xff1a; 為了快速確定一個元素在哈希表中的位置&#xff0c;可以使用一個數組&#xff0c;元素的位置為他的…

某光伏電力監控系統網絡安全監測項目:智能組網技術優化方案實踐

背景與挑戰隨著光伏電力行業的快速發展&#xff0c;光伏電站的規模和分布范圍日益擴大。電力監控系統作為光伏電站的核心平臺&#xff0c;其網絡安全直接關系到電力生產的穩定性與可靠性。然而&#xff0c;光伏場站通常分布在偏遠地區&#xff0c;網絡環境復雜&#xff0c;傳統…

GEE訓練教程:基于Landsat 8衛星影像識別并提取指定區域內無云覆蓋的區域多邊形,最終導出為矢量文件

簡介 本文使用Google Earth Engine平臺,通過Landsat 8衛星影像識別并提取指定區域內無云覆蓋的區域多邊形,最終導出為矢量文件。主要步驟包括:定義研究區域、創建云檢測算法、篩選高質量影像、將無云區域轉換為矢量多邊形,并進行可視化檢查和數據導出。 使用Google Earth…

UniApp 頁面通訊方案全解析:從 API 到狀態管理的最佳實踐

在 UniApp 跨端開發中&#xff0c;組件與頁面間的通訊是核心需求。無論是父子組件交互、跨頁面數據傳遞&#xff0c;還是全局狀態共享&#xff0c;選擇合適的通訊方案直接影響代碼的可維護性和性能。本文將系統對比 uni.$emit 系列 API、狀態管理庫&#xff08;Vuex/Pinia&…

【c++進階系列】:萬字詳解AVL樹(附源碼實現)

&#x1f525; 本文專欄&#xff1a;c &#x1f338;作者主頁&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客勵志語錄&#xff1a; 路在腳下延伸時&#xff0c;不必追問終點何在。你邁出的每一步&#xff0c;都在重新定義世界的邊界 ★★★ 本文前置知識&#xff1a; …

前端日志回撈系統的性能優化實踐|得物技術

一、前言在現代前端應用中&#xff0c;日志回撈系統是排查線上問題的重要工具。然而&#xff0c;傳統的日志系統往往面臨著包體積過大、存儲無限膨脹、性能影響用戶體驗等問題。本文將深入分析我們在dw/log和dw/log-upload兩個庫中實施的關鍵性能優化&#xff0c;以及改造過程中…

【QT隨筆】結合應用案例一文完美概括QT中的隊列(Queue)

【QT隨筆】結合應用案例一文完美概括QT中的隊列&#xff08;Queue&#xff09; 隊列&#xff08;Queue&#xff09;是一種線性數據結構&#xff0c;其核心規則為先進先出&#xff08;FIFO, First-In-First-Out&#xff09;&#xff1a; 新元素在隊尾插入&#xff08;enqueue&a…

At least one <template> or <script> is required in a single file component

環境rspack vue3原因rule 中配置了兩個vue-loader刪掉一個即可。

LangChain實戰(十八):構建ReAct模式的網頁內容摘要與分析Agent

本文是《LangChain實戰課》系列的第十八篇,將深入講解如何構建一個基于ReAct模式的智能網頁內容摘要與分析Agent。這個Agent能夠自主瀏覽網頁、提取關鍵信息、生成智能摘要,并進行深入的內容分析,讓信息獲取和理解變得更加高效。 前言 在信息爆炸的時代,我們每天都需要處理…

debian11 ubuntu24 armbian24 apt install pure-ftpd被動模式的正確配置方法

debian11 ubuntu24 armbian24 apt install pure-ftpd被動模式的正確配置方法 安裝方法請看&#xff1a;https://www.itbulu.com/pure-ftpd.html 疑難問題解決 原本以為配置很簡單的&#xff0c;無非是修改 ForcePassiveIP MinUID PassivePortRange PureDB這幾個配置項就行了…

量化金融|基于算法和模型的預測研究綜述

一、研究背景與發展歷程??1.??量化投資理論演進???奠基階段&#xff08;1950s-1960s&#xff09;??&#xff1a;Markowitz均值方差理論&#xff08;1952&#xff09;、CAPM模型&#xff08;1964&#xff09;奠定現代量化投資基礎?衍生品定價&#xff08;1970s-1980s&…

從零開始的云計算生活——第六十天,志在千里,使用Jenkins部署K8S

一.安裝kubectl1、配置yum源cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/kubernetes-new/core/sta…