境)
簡介PortableGit V2.3564位是為Windows平臺打造的Git便攜發(fā)行版面向需要在多臺電腦間移動開發(fā)、又不愿安裝復(fù)雜環(huán)境的開發(fā)者解決版本控制工具隨身攜帶與快速使用的問題V2.35更新包含性能提升、新功能與錯誤修復(fù)較舊版更穩(wěn)定。軟件集成Git命令行工具、Git Bash終端、Git GUI圖形界面及必要運行庫可在U盤或移動硬盤中直接運行不在主機系統(tǒng)留下痕跡也便于離線或受限網(wǎng)絡(luò)環(huán)境下使用。壓縮包約115.03MB內(nèi)含6057個文件核心為exe、dll等可執(zhí)行程序與運行庫輔以pl/pm/sh/py等腳本來擴展命令html、txt等構(gòu)成文檔幫助體系vim/tcl等為編輯器與環(huán)境配置。已有306人學(xué)習(xí)下載。借助內(nèi)置的分支管理、合并、回滾及常用git clone/add/commit/push/pull操作用戶可以高效完成代碼版本管理和團隊協(xié)作Git Bash還可提供類Unix體驗Git GUI則降低命令行門檻適合從入門到進階的開發(fā)者隨時調(diào)用。1. PortableGit V2.3564 位Windows 便攜版從 U 盤里跑起來的一整套 Git 環(huán)境如果只是臨時跑個項目沒人愿意在一臺陌生的 Windows 上一步步點安裝向?qū)?。PortableGit V2.3564 位就是那個解壓即用的選擇它不寫注冊表、不往系統(tǒng)目錄里塞文件解壓到一個文件夾就能開出完整的 Git Bash版本由你說了算換機器拔 U 盤就走。我自己的 U 盤里常駐一份這樣的便攜版遇到客戶機器、CI 環(huán)境或者剛裝好的系統(tǒng)第一件事就是把它拉出來用。它的價值對你來說分三種想在一臺機器上維護多個 Git 版本項目要求固定版本不跟著系統(tǒng)升級走或者單純不想讓安裝過程污染環(huán)境。下面就從解壓到配置、踩坑把它講透。2. 部署與驗證解壓后怎么讓 cmd 和 PowerShell 都認(rèn)出 git2.1 解壓與啟動方式不只是雙擊 git-bash 這一條路拿到 V2.35 的壓縮包之后先找一個沒有特殊權(quán)限要求的目錄。官方傾向于解壓到某個盤的根目錄但實際使用中放在 D 盤深層路徑也可以。我一般會解壓到 D:\portable-git\路徑里不要有空格和中文字符后面做腳本調(diào)用時會少很多煩惱。解壓完成后頂層目錄大致長這樣cmd\git.exe僅供 Windows 命令行直接調(diào)用的入口后面 PATH 配的就是這個目錄。git-bash.exe完整模擬 unix 環(huán)境的終端日常交互式操作首選。usr\bin\bash.exe被腳本間接調(diào)用的 bash 本體做自動化時用這條路徑。etc\Git for Windows 的全局配置文件目錄里面有 gitconfig 和 inputrc。啟動方式可以分三層理解。交互式用 git-bash.exe它會自動加載 /etc/profile把 unix 工具鏈都塞進 PATHWindows 原生終端里用 cmd\git.exe前提是 PATH 要配好腳本里用 usr\bin\bash.exe --login 來跑 .sh 文件這層最可控同一份腳本在不同機器上的行為是一致的。很多人只停留在雙擊 git-bash一旦代碼里需要調(diào)用 git 命令就翻車問題往往不在 PortableGit 本身而是啟動方式?jīng)]選對。還有一個細(xì)節(jié)值得注意git-bash.exe 和 usr\bin\bash.exe 是兩個不同層級的入口。前者是圖形終端包裝會新開窗口后者是純命令行 bash適合被其他進程調(diào)用。日常提交代碼用前者寫自動化任務(wù)用后者不要把兩者混著用。我在一臺沒裝過 Git 的干凈機器上驗證過解壓完成后直接用 git-bash 就能跑 git clone這也是便攜版最直觀的價值解壓即用。2.2 把 cmd 目錄放進 PATHsetx 的坑與更穩(wěn)的替代如果只開 Git BashPATH 配不配無所謂因為 git-bash 啟動時自己會加。但要在 cmd、PowerShell 和各類編輯器里直接敲 git就得把 D:\portable-git\cmd 加進 PATH。常見做法是用系統(tǒng)設(shè)置里的「環(huán)境變量」對話框在用戶變量 Path 里追加這一條。我不推薦用 setxsetx PATH %PATH%;D:\portable-git\cmd這條命令有兩個坑。第一setx 對環(huán)境變量的長度上限是 1024 個字符一旦原 PATH 太長多余部分會被靜默截斷等你下次重開終端才發(fā)現(xiàn)一堆工具找不到了。第二%PATH% 展開的是運行時合并了系統(tǒng)變量和用戶變量的完整值setx 會把這份合并結(jié)果寫回用戶變量等于把系統(tǒng)目錄也抄了一份進去之后系統(tǒng)目錄更新你的用戶變量也不會跟著變邏輯上就擰巴了。更穩(wěn)的做法有兩條。圖形界面里用 sysdm.cpl 手動改這個大家都會自動化場景里我一般用 PowerShell 改用戶級 Path[Environment]::SetEnvironmentVariable( Path, [Environment]::GetEnvironmentVariable(Path, User) ;D:\portable-git\cmd, User )這段代碼只操作 User 作用域不會把系統(tǒng) PATH 混進來也不會觸碰到 1024 字符的截斷。參數(shù)上唯一的注意點是用戶級 Path 可能包含 %USERPROFILE% 這類未展開變量讀出來寫回去時最好用原始字符串別讓它展開成絕對路徑。改完以后當(dāng)前已經(jīng)打開的終端不會自動感知重開一個窗口再驗證。PowerShell 里還有一個臨時驗證的小技巧不用改永久變量直接在當(dāng)前會話刷新 $env:Path適合你只想在當(dāng)前窗口試一下的場景。但注意這只是會話級生效下次開終端就沒了不能替代真正的用戶級配置。2.3 版本驗證與多 Git 排查怎么確認(rèn)跑的是 PortableGit 而不是別的PATH 配完重開一個終端先驗證三件事git --version git --exec-path which git第一條確認(rèn)版本V2.35 會輸出 git version 2.35.1.windows.2 這種帶 windows 標(biāo)記的版本號第二條確認(rèn)內(nèi)置命令在 PortableGit 目錄下而不是某個系統(tǒng)自帶 Git 的安裝位置第三條在 cmd 里應(yīng)該顯示 D:\portable-git\cmd\git.exe。如果 which git 指向的是 C:\Program Files\Git\cmd\git.exe說明系統(tǒng)里已經(jīng)裝了別的 Git并且它的 PATH 順序排在你前面。這里不妨多說兩句 Windows 解析命令的機制。Windows 按 PATH 從左到右找第一個命中的可執(zhí)行文件找到就用不再往后看。所以 PortableGit 想生效要么把它的 cmd 目錄往前挪要么在需要時用絕對路徑調(diào)用。Git Bash 內(nèi)部對 Windows PATH 的加載順序有自己的規(guī)則它會在啟動腳本里把自己 unix 工具目錄優(yōu)先所以雙擊 git-bash 時 git 命令多半沒問題問題集中在 cmd 和 PowerShell。排查時用 where git 列全部候選路徑一眼就能看到底是哪一份 Git 在響應(yīng)。這種問題往往不是 PortableGit 的問題是系統(tǒng)里本身就有安裝版 Git兩個并存時產(chǎn)生了優(yōu)先級競爭。把 PortableGit 的用戶 PATH 條目前移之后再執(zhí)行 git --version 確認(rèn)變更生效。版本驗證這一步里git --exec-path 我建議每次都看一眼因為它能暴露內(nèi)置命令的物理位置比單純看版本號更能確認(rèn)到底在執(zhí)行哪一套。3. 初始化一組能隨身帶的配置用戶信息、換行符與憑證3.1 全局用戶信息與配置文件位置的取舍解壓后第一件事是配置 user.name 和 user.email。這個大家都知道但 PortableGit 場景下有個特殊點全局配置寫到哪個 HOME 下。默認(rèn)情況下PortableGit 的 HOME 指向 C:\Users\你的用戶名也就是和系統(tǒng)安裝版 Git 共用同一個 .gitconfig。如果你只是想臨時用這沒問題但如果你想讓便攜環(huán)境真正獨立就得把 HOME 指到 PortableGit 目錄附近。git config --global user.name 你的名字 git config --global user.email 你的郵箱這兩條命令決定的只是往哪個文件寫配置。--global 對應(yīng)用戶級 $HOME/.gitconfig--system 對應(yīng) PortableGit 的 etc/gitconfig--local 對應(yīng)倉庫內(nèi) .git/config。優(yōu)先級是 local global system。我的習(xí)慣是別名、換行符這類通用偏好放 global機器相關(guān)的配置也盡量放 global不碰 system 文件。因為 etc/gitconfig 在 PortableGit 升級時可能被覆蓋放自己可控的 global 更省心。想讓配置跟著 U 盤走只需在啟動 git-bash 之前把 HOME 環(huán)境變量指向便攜目錄下的一個子目錄例如 D:\portable-git\home。之后所有 --global 配置、SSH 密鑰、還有 .gitconfig 都會落在那個目錄里換機器解壓一份新的 PortableGit把環(huán)境變量一配配置就全回來了。這里的關(guān)鍵是理解 HOME 的作用范圍git 配置、ssh 找密鑰、bash 找 .bashrc全都會看這個變量。不要把它和 Windows 的 USERPROFILE 混為一談那兩個指向不同的語義。3.2 換行符策略autocrlf 三個選項和 .gitattributes 兜底Windows 上 Git 最經(jīng)典的問題就是換行符。倉庫里存 LFWindows 編輯器默認(rèn) CRLF如果不管會出現(xiàn)每次進入編輯都提示文件被修改的情況。core.autocrlf 有三個值trueWindows 下推薦。checkout 時把 LF 轉(zhuǎn) CRLFcommit 時把 CRLF 轉(zhuǎn) LF。單機用很省心。input提交時把 CRLF 轉(zhuǎn) LFcheckout 不轉(zhuǎn)換。適合你確定編輯器會輸出 LF、只是想把臟行尾擋在提交之前的情況。false完全不轉(zhuǎn)換。項目里已經(jīng)有嚴(yán)格 LF 規(guī)范、或者倉庫文件類型復(fù)雜時用這個。V2.35 的 Git for Windows 默認(rèn)值是 true。但我不建議在配置文件里單獨依賴這一個開關(guān)因為不同同事的 autocrlf 各不相同倉庫里既有 LF 又有 CRLF 時照樣會亂。更穩(wěn)的做法是倉庫根目錄維護 .gitattributes用規(guī)則聲明哪些文件用什么行尾* textauto *.sh text eollf *.bat text eolcrlf *.png binarytextauto 讓 Git 對文本文件做規(guī)范化eollf 和 eolcrlf 精確鎖定各類型文件的行尾binary 把二進制文件排除在外。.gitattributes 在團隊倉庫里是提交到遠(yuǎn)程的所以它的規(guī)則對所有人生效優(yōu)先級高于各人本地的 autocrlf。我個人經(jīng)驗是只要是跨平臺項目.gitattributes 必須進倉庫本地 autocrlf 只是兜底。換行符問題處理完后如果倉庫里已經(jīng)有舊文件帶著錯誤行尾跑一遍 git add --renormalize . 讓 Git 按新規(guī)則重新規(guī)范化索引這是不重寫工作區(qū)的最快辦法。如果行尾告警只是偶爾出現(xiàn)不想大動干戈也可以在本地把這個倉庫的 autocrlf 顯式關(guān)掉。但這樣做的代價是工作區(qū)會混入倉庫原本的 CRLF下次提交時又把臟行尾提交進去治標(biāo)不治本。我的建議始終是全局配置用默認(rèn) true倉庫規(guī)則交給 .gitattributes兩邊各管一段。3.3 SSH 密鑰與憑證助手換機器后最常翻車的這步連接遠(yuǎn)程倉庫時推薦用 SSH 而非 HTTPS因為密鑰比密碼好管理。在 Git Bash 里生成密鑰ssh-keygen -t ed25519 -C 你的郵箱 -f ~/.ssh/id_ed25519-t ed25519 比默認(rèn)的 rsa 更小更快V2.35 的底層 OpenSSH 支持沒問題。如果你要連的是老舊服務(wù)器才需要退回 rsa 4096。生成后把 ~/.ssh/id_ed25519.pub 的內(nèi)容粘貼到代碼托管平臺的 SSH keys 設(shè)置里。注意在多臺電腦場景下不建議把同一份私鑰往機器間復(fù)制。正確做法是每臺機器各自生成密鑰對把各自的公鑰都配到賬號下哪天某臺機器丟了吊銷那一把公鑰就行其他機器不受影響。如果你偏好更省事的方式也可以把私鑰放進隨身目錄、配一個 ssh-agent 統(tǒng)一管理。具體來說在 .bashrc 里加一句 eval $(ssh-agent) 再 ssh-addGit Bash 每次啟動自動加載密鑰輸一次口令之后一個會話內(nèi)都不用再輸。這個方案適合密鑰有口令保護的人丟 U 盤也不至于直接泄露。憑證方面V2.35 的默認(rèn)憑證助手是 manager-core它在完整版 Windows 上表現(xiàn)正常但一些精簡過的系統(tǒng)缺少運行庫git pull 時會一直彈窗或直接報找不到 git-credential-manager-core。遇到這種情況最省事的后備方案是切到 store 模式git config --global credential.helper storestore 模式把憑證明文寫在 ~/.git-credentials好處是命令不彈窗、一次性配好壞處是明文風(fēng)險。我的處理方法是只在可信的內(nèi)網(wǎng)倉庫或者臨時環(huán)境用 store離開前記得刪掉這個文件。還有一點容易被忽略切換憑證助手后已經(jīng)緩存過的老憑證不會立刻失效如果 push 后發(fā)現(xiàn)還在用舊賬號就去 Windows 的「憑證管理器」里把對應(yīng)條目刪掉再重試。憑證助手選型上我一般先試默認(rèn)的 manager-core它彈窗次數(shù)最少報錯再降級到 store而不是一開始就用 store。4. 常見問題與避坑部署和日常使用中的五個翻車點4.1 部署階段閃退與 PATH 搶占現(xiàn)象一雙擊 git-bash.exe 閃退命令行窗口一閃就沒了。原因大概率是安全軟件把 PortableGit 的關(guān)鍵 dll 或者 usr/bin 下的可執(zhí)行文件隔離了。解壓動作觸發(fā)實時掃描文件剛落地就被帶走bash 起不來。解決先把壓縮包放到本地磁盤再解壓解壓時臨時退出安全軟件解壓完成后把目錄加白名單。還有個小概率原因是解壓到網(wǎng)絡(luò)路徑或權(quán)限受限的系統(tǒng)目錄把 PortableGit 放到用戶有完整讀寫權(quán)限的位置。現(xiàn)象二在 cmd 里敲 git --version顯示的版本不是 V2.35而是系統(tǒng)里另一個老 Git。原因不是 PortableGit 沒裝好是 PATH 檢索順序里系統(tǒng)的 Git 目錄排在前面。解決用 where git 列出所有候選然后把 PortableGit 的 cmd 目錄在用戶 PATH 里往前調(diào)。如果始終有小工具優(yōu)先調(diào)用系統(tǒng)目錄最直接的辦法就是在調(diào)用時寫完整路徑后面腳本化調(diào)用時我會這么做。4.2 日常使用階段換行符告警與終端找不到 git現(xiàn)象三每次 git add 都提示 LF will be replaced by CRLF 或者反過來看著煩偶爾還擔(dān)心是否改了文件。原因就是 core.autocrlf 和倉庫已有文件的行尾不匹配。這通常不是錯誤只是提示但大量告警會掩蓋真正的報錯。解決先把倉庫根目錄的 .gitattributes 立起來讓規(guī)則入庫本地再確認(rèn) autocrlf 不是 false。規(guī)則改完后跑一次 git add --renormalize . 讓 Git 按新規(guī)則重新規(guī)范化索引里的行尾然后提交一次告警基本消失。如果遲遲不動 .gitattributes只是每次告警時手動忽略倉庫里就會慢慢混入兩種行尾的文件最終某天 git diff 出現(xiàn)整文件級別的改動那時候已經(jīng)分不清是真實改動還是行尾漂移。換行符的問題不能拖越拖越難收拾?,F(xiàn)象四明明 PATH 已經(jīng)加進系統(tǒng)設(shè)置PowerShell 里 git 還是「無法識別」。原因當(dāng)前終端會話啟動時 PATH 已經(jīng)加載系統(tǒng)設(shè)置的修改不會自動進入已經(jīng)打開的會話。解決有兩種重開終端讓新 PATH 生效或者只對當(dāng)前會話臨時刷新。別在一開著的窗口里反復(fù)測驗這會讓人誤以為配置壞了。在 PowerShell 里臨時生效的命令是 $env:Path D:\portable-git\cmd; $env:Path加了之后就立即能用只是重啟終端會失效。這個坑最常見的翻車場景是改了環(huán)境變量后編輯器或 IDE 里集成的終端不重啟直接調(diào) git 報錯于是以為配置沒寫進去。實際上環(huán)境變量寫成功了只是當(dāng)前進程沒拿到新值。工具鏈里的每一個進程都應(yīng)該重啟不光是終端窗口本身。4.3 配置遷移HOME 改了但 .ssh 沒跟上現(xiàn)象五給 PortableGit 指向自定義 HOME 后ssh 連接遠(yuǎn)程倉庫提示找不到身份文件或者讓輸入密碼。原因HOME 變量被改了git 和 ssh 都去新 HOME 找 .ssh/id_ed25519但新目錄下沒有 .ssh 文件夾密鑰不在那里。解決把整個 .ssh 目錄搬過去同時注意 Windows 上私鑰文件的權(quán)限要收緊或者用 core.sshCommand 顯式指定密鑰路徑git config --global core.sshCommand ssh -i D:/portable-git/home/.ssh/id_ed25519這個設(shè)置只影響 Git 調(diào)用 ssh 的方式不影響系統(tǒng)其他 ssh 使用。如果搬完 .ssh 還是不行檢查一下密鑰文件是否帶多余的后綴名OpenSSH 對文件名敏感多一個字符都不認(rèn)。還有一件事容易被忽略.ssh 目錄下不能有其他用戶可寫否則 OpenSSH 會拒用該密鑰Windows 上表現(xiàn)為權(quán)限錯誤。打開文件屬性把繼承權(quán)限收緊到只剩當(dāng)前用戶。5. 多版本共存與配置遷移把整份環(huán)境粘到 U 盤上5.1 新老版本并存腳本里用絕對路徑調(diào)用V2.35 和其他 Git 新版本完全可以并存。它們各自解壓到獨立目錄互不干擾只要 PATH 里只放其中一份就不會有沖突。全局配置默認(rèn)共用同一份 $HOME/.gitconfig如果你想隔離把 HOME 分開指向兩個目錄即可。用共享配置也不需要擔(dān)心格式問題Git 配置格式向后兼容老版本讀新配置文件可能會有未知字段告警但基本不影響主流程。腳本里調(diào)用時不建議依賴 PATH 解析寫絕對路徑最穩(wěn)D:\git235\cmd\git.exe -C D:\workspace\project status D:\git\cmd\git.exe -C D:\workspace\project log -1 --oneline-C 指定倉庫目錄即使當(dāng)前目錄不在倉庫里也能正確執(zhí)行。這個方法也順便繞開了 PATH 順序問題無論系統(tǒng) PATH 里還有沒有別的 Git腳本都只執(zhí)行你指定的這一份。我一般會做一個環(huán)境變量 GIT235 和 GITNEW 指向兩個目錄腳本里寫成 $GIT235\cmd\git.exe路徑出現(xiàn)變化時只改變量不改腳本。切換版本的另一個入口是 git-bash.exe 本身新老版本的終端窗口完全獨立不會互相干擾。我實際用下來最省心的方式不是日常頻繁切而是固定一份作為默認(rèn)另一份只在特定項目或排查問題時啟用。便攜版的優(yōu)勢就在于切版本的成本只是換一個目錄不是卸載重裝。5.2 配置隨身走把 HOME 指到一個 dotfiles 目錄規(guī)劃一個目錄比如 D:\dev\dotfiles把 .gitconfig、.ssh、.gitignore_global 放進去。然后在系統(tǒng)環(huán)境變量里把 HOME 指向這個目錄。注意HOME 這個變量在 Windows 上默認(rèn)不存在系統(tǒng)用的是 USERPROFILE但 Git Bash 和 OpenSSH 認(rèn) HOME。我在多臺機器上就是這么干的解壓 PortableGit改掉 HOMEgit 的全局配置、密鑰、別名全部復(fù)活。# .gitconfig 片段示例 [user] name your-name email your-email [core] autocrlf true excludesfile ~/.gitignore_global [alias] co checkout st status lg log --oneline --graph --all -15這個文件涵蓋了用戶名、行尾策略、全局忽略文件和最常用的別名。.gitignore_global 里放的是個人通用的忽略規(guī)則比如 .idea、*.suo、Thumbs.db 這類編輯器或系統(tǒng)文件。SSH 方面把 id_ed25519、id_ed25519.pub、known_hosts 三個文件放進 .ssh 目錄之后連接新主機時 known_hosts 也會自動更新不用每臺機器重新確認(rèn)指紋。配置袋里還可以放一個 .bashrcPortableGit 的 Git Bash 啟動時會自動加載用戶目錄下的 .bashrc。我一般會在里面加幾條 PATH 追加和 alias比如把 PortableGit 的 cmd 目錄加進去、定義 ll 這樣的簡寫。這樣換機器后打開終端第一眼看到的提示符都是熟悉的樣子這種細(xì)節(jié)比大功能更影響使用心情。5.3 用 init 腳本一鍵還原 PortableGit 環(huán)境有了上面的配置袋換到一臺新機器只需要三步解壓 PortableGit把 dotfiles 目錄放到位跑一個 init 腳本。bat 腳本可以寫成這樣echo off setx HOME D:\dev\dotfiles setx PATH %PATH%;D:\portable-git\cmd git config --global core.excludesfile %HOME%\.gitignore_global echo done第一行把 HOME 固定到配置袋第二行把 cmd 加進 PATH第三行關(guān)聯(lián)全局忽略文件。注意這里用 setx 有 1024 字符風(fēng)險嚴(yán)格一點的做法是用之前提到的 PowerShell SetEnvironmentVariable 只改用戶作用域。跑完之后重開終端git --version 和 ssh -T 分別驗證配置與連接。ssh -T 的返回信息因托管平臺而異但只要提示認(rèn)證成功就說明公鑰和私鑰配對正常。這套流程我實際跑過很多次從解壓到全部配置生效五分鐘以內(nèi)能完成。init 腳本本質(zhì)上是一份部署清單它把手動配置過程中容易漏掉的步驟固化下來避免每次換機器都要重新回憶一遍。腳本本身也會跟著 dotfiles 一起走U 盤拷到哪都能用。如果你希望更自動化還可以把 PortableGit 壓縮包一起放進 U 盤整個環(huán)境就是目錄 腳本 配置袋三層結(jié)構(gòu)三層各司其職。6. 再進一步用 PortableGit 的 bash 跑一套自包含構(gòu)建腳本到了這一步你已經(jīng)擁有了一個完全獨立的 Git 環(huán)境接下來可以把它當(dāng)成構(gòu)建工具鏈的一部分來用。我經(jīng)常會寫一個自包含的 build.sh用 PortableGit 的 bash 執(zhí)行讓腳本不依賴系統(tǒng)是否裝了 Git也不怕系統(tǒng)里的 Git 版本太老、語法不支持。#!/usr/bin/env bash set -euo pipefail export HOMED:/dev/dotfiles export PATH/d/portable-git/cmd:$PATH VERSION$(git describe --tags --always --dirty) echo build version: $VERSION # 這里放你的編譯、打包、產(chǎn)物輸出命令 # 例如用 tar 打包源碼目錄 tar -czf dist/$(basename $PWD)-$VERSION.tar.gz src/調(diào)用方式固定走 PortableGit 的 bash不經(jīng)過系統(tǒng)注冊的 gitD:\portable-git\usr\bin\bash.exe --login D:\workspace\project\build.sh--login 會讓 bash 加載 /etc/profile 和 ~/.bashrc這樣 unix 工具鏈和自定義 PATH 都齊了。腳本第一行把 PortableGit 的 cmd 目錄放在 PATH 最前面保證腳本內(nèi)部所有的 git 調(diào)用都命中 V2.35而不是系統(tǒng)里的舊版本。即使系統(tǒng)裝了別的 Git這個腳本也完全不受影響這就是自包含的含義。我過去吃過一次虧在某臺機器上跑項目腳本腳本里直接寫 git 命令系統(tǒng)里裝著老版本 Git解析不了新語法直接崩掉排查半天才發(fā)現(xiàn)調(diào)的是系統(tǒng) Git 而不是項目指定的便攜版。從那以后我每次跑構(gòu)建腳本前都強制確認(rèn) bash.exe 的絕對路徑腳本里也顯式把 PortableGit 的 cmd 放在 PATH 第一位。從那以后我每次跑構(gòu)建腳本前都強制確認(rèn) bash.exe 的絕對路徑腳本里也顯式把 PortableGit 的 cmd 放在 PATH 第一位。把這套做法固定下來構(gòu)建就再也不受環(huán)境差異影響了。希望幫到你。本文還有配套的精品資源點擊獲取