
Ich habe einige Dateien, die ich gerade in mein Git-Repo übertragen habe:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>git diff --name-only head^^ 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
Nun möchte ich die Pfade erfassen und etwas anderes damit machen, aber der git diff
Befehl erzeugt keine(?) Zeilen, FOR /F
über die ich iterieren kann:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>für /f %p in ('git diff --name-only head^^') mache @( echo %p )
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>
Was ist denn hier los?Zuerst dachte ich, es handele sich um einen Fehler in meiner Syntax, aber das Diffraktionsvergleichen mit anderen Zielen funktioniert innerhalb der For-Schleife. Beispielsweise beweist "master^^", dass nicht nur das Escape-Zeichen für Chaos sorgt:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>für /f %p in ('git diff --name-only master^^') mache @( 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/web/pcf/TabBar.pcf ClaimCenter/modules/configuration/config/web/pcf/team/user/TeamUserClaims.pcf ClaimCenter/Module/Konfiguration/gsrc/Citizens/cc/pcf_gs/Team/TeamTabLastUser.gs
Antwort1
Verwenden Sie doppeltes Escape von „head^“ zu „head^^^^“:
C:\core\guidewire\Release\5.3_MT1\ClaimCenter>für /f %p in ('git diff --name-only head^^^^') mache @(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
Wenn CMD den zitierten Befehl ausführt, findet eine zweite Erweiterungsrunde statt, sodass aus und dann ^^
wird . Tatsächlich beweist der Testfall, der sich von „master^^“ unterscheidet, nichts, da am Ende keine Zirkumflexe mehr übrig sind. Die ursprüngliche Befehlszeile hat einfach HEAD von HEAD unterschieden, wobei natürlich überhaupt keine Dateien geändert wurden.^