
내 git repo에 방금 커밋한 파일이 있습니다.
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/CRO05000ApplyCustomReopenRule_dir/CRO05030DefaultAssignment.gr ClaimCenter/modules/configuration/config/ 웹/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/TeamTabLastUser.gs
CMD가 인용된 명령을 실행하면 두 번째 확장 라운드가 발생하므로 및 가 ^^
됩니다 . 실제로 "master^^"와 비교한 테스트 케이스는 캐럿이 하나도 남지 않아 아무 것도 증명하지 못합니다. 원래 명령줄은 단순히 HEAD와 HEAD를 구별했는데, 물론 파일이 전혀 변경되지 않았습니다.^