git比較不同分支的不同提交文件差異

背景:只想比較某2個分支的某2次提交的差異,不需要帶上父提交。

以commitA為基準,用commitB去比較差異

直接上代碼:


commitA=xxxx1
commitB=xxxx2
outputFile="output.txt"# 獲取與第一個父提交的文件列表
filesA=$(git diff --name-only $commitA^1 $commitA)
filesB=$(git diff-tree --no-commit-id --name-only -r $commitB)# 創建關聯數組來存儲文件狀態
declare -A fileStatus# 將 filesA 和 filesB 的文件狀態存入關聯數組
for file in $filesA; dofileStatus["$file"]="DELETE"
donefor file in $filesB; doif [[ -n "${fileStatus["$file"]}" ]]; thenfileStatus["$file"]="MODIFY"elsefileStatus["$file"]="ADD"fi
done# 輸出文件狀態
for file in "${!fileStatus[@]}"; doecho "$file (${fileStatus[$file]})" >> "$outputFile"
done

可以用python實現美化樹結構

def build_tree(file_list):tree = {}for line in file_list:# 分割文件路徑和狀態file_path, status = line.rsplit(' ', 1)parts = file_path.split('/')current = treefor part in parts[:-1]:  # 處理目錄部分if part not in current:current[part] = {}current = current[part]# 處理文件部分file_name = parts[-1]current[file_name] = status.strip('()')  # 只在文件上存儲狀態return treedef print_tree(node, prefix='', is_last=True):for i, (key, value) in enumerate(node.items()):connector = '└── ' if is_last else '├── '# 判斷是否是文件,最后一個文件不加 '/'if isinstance(value, str):  # 如果是文件,直接打印狀態print(prefix + connector + key + ' (' + value + ')')else:  # 如果是目錄,打印目錄名print(prefix + connector + key + '/')if isinstance(value, dict):new_prefix = prefix + ('    ' if is_last else '│   ')print_tree(value, new_prefix, i == len(node) - 1)# 讀取文件內容
with open('output.txt', 'r') as file:file_content = file.readlines()file_content = [line.strip() for line in file_content]# 構建樹形結構
file_tree = build_tree(file_content)# 打印樹形結構
print("文件樹形結構:")
print_tree(file_tree)

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

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

相關文章

Linux內核之struct pt_regs結構

前沿 項目開發最近進行系統hook功能實現相關業務,主要在centos7和8系列環境開發下關功能。調研了相關知識點,發現在系統7和8上內核版本差別比較大,7-3.10.x系列版本,8-4.18.x系列版本。依據兩個系統的內核情況根對應的內核符號表進…

《從混亂到有序:ArkUI項目文件結構改造指南》

在ArkUI開發的廣袤天地里,構建一個清晰、有序的文件結構,是打造優質應用的關鍵。一個合理的文件結構,就像為開發者精心繪制的地圖,在項目的各個階段,都能提供明確的指引,讓開發過程順暢無阻。今天&#xff…

C#基于Sunnyui框架和MVC模式實現用戶登錄管理

C#基于Sunnyui框架和MVC模式實現用戶登錄管理 1 Controller1.1 UserManagementController.cs(控制器入口) 2 Model2.1 UserRepository.cs(用戶管理模型)2.2 User.cs(用戶結構體)2.3 SQLiteHelper.cs&#x…

自然語言處理(NLP)技術的實例

自然語言處理(NLP)技術在各個領域都有廣泛的應用,以下是幾個例子: 語音識別:通過NLP技術,計算機可以識別和理解語音指令,例如智能助手如Siri和Alexa就是通過語音識別技術實現與用戶的交互。 機…

Spring Boot實戰(三十六)編寫單元測試

目錄 一、什么是單元測試?二、Spring Boot 中的單元測試依賴三、舉例 Spring Boot 中不同層次的單元測試3.1 Service層3.2 Controller 層3.3 Repository層 四、Spring Boot 中 Mock、Spy 對象的使用4.1 使用Mock對象的背景4.2 什么是Mock對象,有哪些好處…

aws服務(四)文件存儲服務S3 介紹使用代碼集成

一、介紹 1、簡介 Amazon S3 是 Amazon Web Services 提供的一種對象存儲服務(Object Storage),用于在云中存儲和檢索任意數量的數據。它以高可用性、高擴展性和高持久性著稱,非常適合用來存儲網站資源、數據備份、日志文件、大數據、機器學習輸入輸出等。 2、主要特性 …

應用信息1.13.0發布

增加工具箱 增加啟動器功能 增加布局查看器 增加手動安裝和卸載應用 增加APK文件解析 增加應用多選功能 增加查看應用預裝版本 增加應用信息和ADB命令導出 修復其它問題... 百度下載:百度網盤 請輸入提取碼 提取碼:1234

【Vue3 實戰】插槽封裝與懶加載

一、為什么需要插槽?從一個面板組件說起 在電商首頁開發中,經常遇到這樣的場景: 「新鮮好物」「人氣推薦」同樣類型模塊都需要相同的標題欄,但內容區布局不同 這時候,插槽(Slot)就像一個「內容…

虛無隧穿產生宇宙(true nothing tunneling) 是誰提出的

是 亞歷克斯.維連金 英文名(alex vilenkin 或者 Alexander Vilenkin)提出來的。 “虛無隧穿產生宇宙”(true nothing tunneling)這一概念并非一個標準的物理學術語,它更像是對某些現代宇宙學理論的描述,尤其是涉及宇宙…

postgis:添加索引時提示“對訪問方法 gist 數據類型 geometry 沒有默認的操作符表“

問題 在對gis表的geom字段創建空間索引時,出現“對訪問方法 "gist" 數據類型 geometry 沒有默認的操作符表”的提示報錯。 解決方案 按系列步驟進行排查并解決。 1.先確認已安裝postgis -- 查看postgis版本 SELECT postgis_full_version() 若安裝了則…

圖論---Prim堆優化(稀疏圖)

題目通常會提示數據范圍&#xff1a; 若 V ≤ 500&#xff0c;兩種方法均可&#xff08;樸素Prim更穩&#xff09;。 若 V ≤ 1e5&#xff0c;必須用優先隊列Prim vector 存圖。 #include <iostream> #include <vector> #include <queue> #include <…

代碼隨想錄算法訓練營第一天:數組part1

今日學習的文章鏈接和視頻鏈接 ● 自己看到題目的第一想法 ● 看完代碼隨想錄之后的想法 ● 自己實現過程中遇到哪些困難 ● 今日收獲&#xff0c;記錄一下自己的學習時長 狀態 思路理解完成 30% 代碼debug完成 60% 代碼模板總結并抽象出來 100% 題目 704 二分查找 題目鏈接…

企業為何要求禁用缺省口令?安全風險及應對措施分析

在當今數字化時代&#xff0c;企業網絡安全面臨著前所未有的挑戰。缺省口令的使用是網絡安全中的一個重要隱患&#xff0c;許多企業在制定網絡安全紅線時&#xff0c;明確要求禁用缺省口令。本文將探討這一要求的原因及其對企業安全的重要性。 引言&#xff1a;一個真實的入侵場…

PostgreSQL 中的權限視圖

PostgreSQL 中的權限視圖 PostgreSQL 提供了多個系統視圖來查詢權限信息&#xff0c;雖然不像 Oracle 的 DBA_SYS_PRIVS 那樣集中在一個視圖中&#xff0c;但可以通過組合以下視圖獲取完整的系統權限信息。 一 主要權限相關視圖 Oracle 視圖PostgreSQL 對應視圖描述DBA_SYS_…

【防火墻 pfsense】1簡介

&#xff08;1&#xff09; pfSense 有以下可能的用途&#xff1a; 邊界防火墻 路由器 交換機 無線路由器 / 無線接入點 &#xff08;2&#xff09;邊界防火墻 ->要充當邊界防火墻&#xff0c;pfSense 系統至少需要兩個接口&#xff1a;一個廣域網&#xff08;WAN&#xff0…

數據庫+Docker+SSH三合一!深度評測HexHub的全棧開發體驗

作為一名技術博主&#xff0c;我最近一直被各種開發工具切換搞得焦頭爛額。數據庫要用Navicat&#xff0c;服務器管理得開Termius&#xff0c;Docker操作還得切到命令行&#xff0c;每天光在不同工具間切換就浪費了大量時間。直到團隊里的一位架構師向我推薦了HexHub這個一體化…

第十天 Shader編程:編寫簡單表面著色器 Addressable資源管理系統 DOTS(面向數據技術棧)入門

前言 作為Unity初學者&#xff0c;在實現復雜場景時經常會遇到性能瓶頸。本文將帶你通過四個關鍵技術的實戰學習&#xff0c;掌握現代Unity開發的核心優化方案&#xff1a; Shader編程 - 編寫表面著色器控制物體渲染Addressable系統 - 實現高效資源管理DOTS技術棧 - 解鎖百萬…

項目自動化測試

一.設計測試用例(細致全面) 二.先引入所需要的pom.xml依賴 1.selenium依賴 2.webdrivermanager依賴 3.commons-io依賴 編寫測試用例–按照頁面對用例進行劃分,每個頁面是Java文件,頁面下的所有用例統一管理 三.common包(放入公用包) 類1utils 可以調用driver對象,訪問url …

ap無法上線問題定位(交換機發包沒有剝掉pvid tag)

一中學&#xff0c;新開的40臺appoe交換機核心交換機旁掛ac出口路由的組網&#xff0c;反饋ap無法上線&#xff0c;讓協助解決。 組網如下&#xff1a; 排查過程&#xff1a; 檢查ac的配置&#xff0c;沒有發現問題 發現配置沒有問題&#xff0c;vlan1000配置子接口&#xff…

第十七屆山東省職業院校技能大賽 中職組網絡建設與運維賽項

第十七屆山東省職業院校技能大賽 中職組網絡建設與運維賽項 賽題 B 卷 第十七屆山東省職業院校技能大賽中職組網絡建設與運維賽項 1 賽題說明 一、競賽項目簡介 “網絡建設與運維”競賽共分為以下三個模塊&#xff1a; ? 網絡理論測試&#xff1b; ? 網絡建設與調試&#xf…