分步將 xlCompare 整合到 GIT

下面是一套將您的 git 倉庫與 xlCompare 應用連線起來的簡單流程。xlCompare 擁有一組標準的命令列引數(CLI),與差異檢視器及合併工具通用,因此您幾乎可以將它整合到任何版本控制應用中。

第 1 步——在電腦上安裝 xlCompare

訪問下載頁面,或使用直達下載連結 https://xlCompare.com/xlcompare-12-04.msi。將安裝檔案儲存到電腦並執行以安裝 xlCompare。

下文將用到 xlCompare 在您電腦上的安裝路徑。預設情況下,xlCompare 安裝到以下資料夾:

C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare

但如果您安裝到了其他位置(例如 D:\xlCompare),則需相應修改。

第 2 步——編輯 .git/config 檔案

在您倉庫的 .git/config 檔案中加入以下內容:

[diff "xlcompare"]
    command = 'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/exceldiff.cmd'

[merge "xlcompare"]
    name = xlCompare
    driver = 'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/excelmerge.cmd' %A %O %B

[mergetool "xlcompare"]
    cmd = 'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/excelmerge.cmd' "$LOCAL" "$BASE" "$REMOTE" "$MERGED"
    trustExitCode = false

重要:

xlCompare 資料夾的路徑包含空格字元,因此我們用單引號將其包裹。如果遺漏這些引號,您會在 Git 控制檯中收到錯誤資訊。

%A %O %B 是 GIT 用於合併工具的命令列引數:

  • %A —— Excel 檔案的 LOCAL(本地)版本
  • %O —— Excel 檔案的 BASE(共同)版本
  • %B —— Excel 檔案的 REMOTE(遠端)版本

為什麼合併有兩行?

第一行(merge)將 xlCompare 設為自動合併操作的驅動,用於在更新本地倉庫檔案時使用。第二行(mergetool)允許透過命令 git mergetool --tool=xlcompare -y --no-prompt {file path} 使用 xlCompare。

trustExitCode 設為 false 時,由您來判斷合併是否成功;不過在合併模式下,xlCompare 會以退出碼返回衝突數量,因此如有需要,您可將此引數設為 true。

第 3 步——在 git 中將 Excel 檔案與 xlCompare 關聯

這是本指南的最後一步。在倉庫根目錄建立 .gitattributes 檔案(它可能已存在),在檔案末尾加入以下內容:

*.xlsx diff=xlcompare
*.xlsx merge=xlcompare

它會告訴 git:在需要差異檢視器或合併工具時,對 Excel 檔案使用 xlCompare。

開始用 git diff 命令配合 xlCompare!

就這樣,您已將 xlCompare 與 git 倉庫中的 Excel 檔案連線起來。現在 git diff 命令會透過開啟帶差異報告的 xlCompare 來顯示 2 個 XLSX 檔案的差異。

如何整合到 SourceTree 等 GUI 工具?

如果您的版本控制應用允許為 Excel 檔案的差異與合併操作設定 GUI 工具,請使用以下設定。

差異工具

將 xlCompare 的路徑用作工具,預設為:

'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/exceldiff-source-tree.cmd'

合併工具

將 xlCompare 的路徑用作工具,預設為:

'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/excelmerge.cmd'

命令列開關如下:

"$LOCAL" "$BASE" "$REMOTE" "$MERGED"

如果版本控制應用沒有 $MERGED 引數怎麼辦?將它從命令列中移除,使用以下語法:

"$LOCAL" "$BASE" "$REMOTE"

重要

上面命令列開關中我們使用了 $LOCAL、$BASE 與 $REMOTE 名稱,您可能需要將它們替換為版本控制應用所使用的相應名稱。

注意

命令檔案 exceldiff-source-tree.cmd 與 excelmerge.cmd 已包含在 xlCompare 安裝包中,它們就在您電腦上的 xlCompare 安裝資料夾內。

問答

本節介紹一些關於 git 整合 的常見問題。如果您在將 xlCompare 用作 Excel 檔案的差異檢視器或合併工具時需要幫助,請聯絡我們,我們很樂意提供協助。

為什麼我們用 CMD 檔案作為差異與合併工具的驅動?

如果您的版本控制系統要求差異或合併工具為控制檯應用,就需要使用這種方式。xlCompare 本身是 GUI 應用,在要求控制檯工具時並不總能工作。這種情況下,您可以使用我們的驅動,或為您的版本控制應用建立類似的驅動。

CMD 檔案裡有什麼

exceldiff.cmd:

"%~dp0xlCompare.exe" %5 %2 -quit_on_close -titleMine:LOCAL -titleBase:REMOTE -rep:"%__CD__%"
  • "%~dp0xlCompare.exe" —— 當前目錄中 xlCompare 應用的路徑
  • %5 —— Excel 檔案的 LOCAL 版本(git 使用 7 個引數,第 5 個為本地檔案)
  • %2 —— Excel 檔案的 REMOTE 版本
  • quit_on_close —— 關閉對比後 xlCompare 自動退出,省去點選關閉按鈕的時間
  • titleMine:LOCAL —— Git 使用臨時檔名,LOCAL 與 REMOTE 能清晰標識檔案
  • rep:"%__CD__%" —— 倉庫路徑,這是非常重要的開關,應放在最後;缺少此引數將無法開啟子資料夾中的檔案

excelmerge.cmd:

"%~dp0xlCompare.exe" -merge -titleMine:LOCAL -titleBase:BASE -titleTheir:REMOTE "%1" "%2" "%3" -output:"%4" -rep:"%__CD__%"
  • "%~dp0xlCompare.exe" —— 當前目錄中 xlCompare 應用的路徑
  • merge —— 對傳入檔案執行合併操作,若有衝突則開啟 GUI 視窗
  • titleMine:LOCAL —— Git 使用臨時檔名,LOCAL 與 REMOTE 能清晰標識檔案
  • "%1" "%2" "%3" —— Excel 檔案的本地、基準與遠端版本路徑
  • output:"%4" —— 當以 mergetool 命令呼叫 xlCompare 時,此開關讓 xlCompare 將結果儲存到 $MERGED 路徑(在上述 mergetool 語法中作為第 4 個引數傳入)
  • rep:"%__CD__%" —— 倉庫路徑,應作為最後一個開關;缺少它將無法開啟子資料夾中的檔案

如您所見,CMD 檔案的內容很簡單,您可以透過新增 CONFIG 開關來修改它們,或為 GIT 建立自己的 CMD 包裝指令碼。

將 xlCompare 與 GIT 等工具配合使用是否需要授權?

XLSX 與 XML 檔案:將 xlCompare 用作 XLSX 與 XML 檔案的差異或合併工具,需要 xlCompare 專業版授權。

文字檔案:對於文字檔案,您無需 xlCompare 授權,可免費將 xlCompare 用於文字檔案。

下載 xlCompare 桌面版,將其接入您的版本控制流程。

下載試用