Git generates / exports modified files in a specific commit
REF :
https://blog.miniasp.com/post/2014/04/01/Git-Export-Only-Added-Modified-Files.aspx
上面的網頁其實已經有詳細的介紹
問題是當 檔案非常大 使用的環境變數 output 會爆掉 所以檔案太多時會失敗
稍微修改了一下 分享給有需要的
BAT檔 (使用 7Z 壓縮)
使用方法 : GitGetPatch
SHA1_ID PatchName
使用後 會在原目錄下建立
_Patch\PatchName 資料夾
裡面會有 MOD 跟 ORG 方便用 Beyond Compare 比較
也會生成 7z 的壓縮檔, 7z安裝路徑不是預設的話 自己改一下 BAT 的配置就好
 |
| 執行畫面 |
 |
| 會有一個資料夾跟壓縮好的檔案 |
 |
| Mod 跟 ORG 方便用 Beyond Compare 來比較 |
=================================
怕日後參考的資料遺失 節錄重點如下
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT HEAD
for /f "usebackq tokens=*" %A in (`git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT HEAD`) do echo FA|xcopy "%~fA" "G:\git_changed_files\%A"
檔案名稱:git-export-changes.cmd 檔案路徑:C:\Program Files (x86)\Git\cmd
@ECHO OFF
setlocal enabledelayedexpansion
SET zipfile=update.zip
IF "%1"=="" GOTO Help
IF NOT "%2"=="" SET zipfile=%2
set output=
for /f "delims=" %%a in ('git diff --name-only %1^^') do ( set output=!output! "%%a" )
git archive -o %zipfile% HEAD %output%
endlocal
GOTO Exit
:Help
ECHO.
ECHO 用法: git-export-changes ^<ref^> ^<filename.zip^>
ECHO.
ECHO 輸入 ^<ref^> 的時候,可用 HEAD,該程式會自動跟前一個版本做比較
ECHO 若沒輸入 ^<filename.zip^> 的時候,預設為 updates.zip 並輸出在當前目錄
ECHO.
PAUSE
:Exit
使用範例:在 Git 工作目錄下,輸入 git-export-changes.cmd HEAD export-updated-files.zip