
我剛剛在 git 存儲庫中提交了一些文件:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>git diff --僅姓名頭^^ ClaimCenter/modules/configuration/config/web/pcf/TabBar.pcf ClaimCenter/modules/configuration/config/web/pcf / team/user/TeamUserClaims.pcf ClaimCenter/modules/configuration/gsrc/citizens/cc/pcf_gs/team/TeamTabLastUser.gs
現在我想捕獲路徑並用它們做其他事情,但是該git diff
命令不會生成(?)任何用於FOR /F
迭代的行:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>for /f %p in ('git diff --name-only head^^') do @( echo %p )
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>
這裡發生了什麼事?起初我以為這是我的語法中的一些錯誤,但與其他目標的比較在 for 循環內起作用。例如,“master^^”證明這不僅僅是轉義字符造成的破壞:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>for /f %p in ('git diff --name-only master^^') do @( echo %p ) ClaimCenter/modules/configuration/config/rules /Reopened/ClaimReopened_dir/CRO05000ApplyCustomReopenRule_dir/CRO05010AssignToOriginalAdjuster.gr ClaimCenter/modules/configuration/config/rules/Reopened/ClaimReopened_dir/C)050053D.F505d laimCenter/modules/configuration/config/web/pcf/ TabBar.pcf ClaimCenter/modules/configuration/ config/web/pcf/team/user/TeamUserClaims.pcf ClaimCenter/modules/configuration/gsrc/citizens/cc/pcf_gs/team/TeamTabLastUser.gs
答案1
雙轉義“head^”到“head^^^^”:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>for /f %p in ('git diff --name-only head^^^^') do @(echo %p)
ClaimCenter/modules/configuration/config /web/pcf/TabBar.pcf
ClaimCenter/modules/configuration/config/web/pcf/team/user/TeamUserClaims.pcf
ClaimCenter/modules/configuration/gsrc/citizens/cc/pcf_gs/team/TeamTabLastUseramTabLastUser.
當 CMD 運行引用的命令時,會發生第二輪擴展,因此^^
變為^
,然後。事實上,與「master^^」不同的測試案例並不能證明任何事情,因為它最終沒有留下插入符。原始命令列只是將 HEAD 與 HEAD 進行比較,當然根本沒有更改任何檔案。