git比較多個檔案在兩個分支下的差異

2021-08-15 14:49:39 字數 1476 閱讀 8741

簡介

一般工作中,我們每次**測試通過後,**需要合併到master分支,並將master分支的**發布到線上。在合併回master過程,如果涉及到多團隊並行開發時,可能會遇到**合併衝突。在修復衝突過程中,可能將別人的**誤刪或自己的**被別人誤刪。這時我們如何快速判斷,master分支上包含了本次開發功能的所有**?本文主要介紹如何通過管道命令,快速地找出本次需求中開發過的檔案在master分支和測試環境分支下的**差異。

示例

提交內容如下

commit2的提交內容有:修改test2檔案的內容

如何找到一次需求開發中所有修改或新建的檔案列表(即查詢連續commit修改檔案列表)

git checkout '分支名'
head 當前最新commit

head^ 上乙個commit

head^^ 上上個commit

head~n (n為整數) 前n個commit

也可以是具體的commit id值

git diff --name-only head^^

orgit diff --name-only d4e1b3f03feec5bcd60508959dc70f29cfe1bc41

# 結果

test1

test_dir/test2

過濾掉不關心的檔案/資料夾
git diff --name-only [head or commit id] | grep -v [要過濾的檔名/資料夾名]

例: git diff --name-only head^^|grep -v test_dir

結果test1

比較某檔案在兩個分支下的差異
git diff 分支1名 分支2名 檔名

例: git diff test origin/master test1

diff --git a/test1 b/test1

deleted file mode 100644

index 58c9bdf..0000000

--- a/test1

+++ /dev/null

@@ -1 +0,0 @@

-111

某期需求涉及到多個檔案比較git diff --name-only head^^|grep -v test_dir |xargs git diff test master

git比較兩個分支的檔案和提交

master分支建立檔案masterfile.md,兩次修改此檔案,並提交兩次。func分支增加檔案funcfile.md,三次修改此檔案,並提交三次。然後對masterfile.md進行修改,提交第四次。然後切換回master分支,修改masterfile.md,提交第三次。git diff ma...

保持兩個Git分支不同的檔案

時間 2019 01 27 標籤 git 欄目 git 原文 我確定我的 git repo的兩個分支應該只在乙個檔案中有所不同.確保這一點的最簡單方法是在branch1中完成所有工作,並在每次切換到它時將其合併到branch2中 包裝到shell指令碼中,因此每個交換機只需要乙個命令 但是,有沒有辦...

git 合併兩個分支的某個檔案

軟體開發基本都是多個feature分支並行開發,而在上線前有可能某個分支的開發或測試還沒有完成,又或者是產品調整,取消了該分支功能的上線計畫,我們在release前不合併該分支即可,然而如果該分支中的某些小調整卻需要上線,我們就需要把其中的部分檔案合併到release分支。在之前遇到這種情況通常都是...