WFU

[ 精選文章 ]

自行車 入門 Escape 3 , Snap 21 , Revel

最近周末想運動 , 平日想通勤 , 想買台自行車 , 把自己找的資料跟大家分享 , 如果你是玩家級的 就不用看了 這是給跟我一樣的新新新手 參考的 騎車半年後的補充: 如果你有把握你是真的有時間有興趣會一直騎,建議還是存點錢買好一點的彎把公路車, 或是可以考慮買2手的自...

2019年1月31日 星期四

如何讓 Git 僅匯出在特定版本中新增或修改過的檔案 MOD ORG

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