Sådan laver du git-udskriftsstier med skråstreger i stedet for skråstreger fremad i en Windows-konsol

Indlæg af Hanne Mølgaard Plasc

Problem



Er det muligt at lave git udskrive skråstreger i stedet for fremad skråstreger, når det udskriver stier i en Windows-konsol? Jeg vil gerne kunne kopiere de stier, som den udsender og indsætte den i mine fremtidige konsolkommandoer.


Eksempel output:


C:vna>git status
On branch herpderp
Your branch is up-to-date with 'origin/herpyderp'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    Java/HerpDerp/src
    Java/HerpDerp/src/main/java/com/derp/messaging/
    Java/HerpDerp/src/main/java/com/derp/controller/event/
    Java/HerpDerp/src/main/java/com/derp/controller/domain/
    Java/HerpDerp/src/main/java/com/derp/controller/monitor/


nothing added to commit but untracked files present (use "git add" to track)


I stedet for


Java/HerpDerp/src/main/java/com/derp/messaging/


Jeg vil gerne se


JavaHerpDerpsrcmainjavacomderpmessaging


eller endda


Java\HerpDerp\src\main\java\com\derp\messaging\


Rediger: Jeg skulle have præciseret, at dette var for at arbejde med git i en Windows-konsol. Det virker også som det rigtige svar, for mit tilfælde er at bruge Git Bash.

Bedste reference


git status vil blive udført gennem en git bash session, så det ville aldrig bruge i sti (som set i 'Git Bash for Windows viser/forventer filstier med fremadskårne skråstreger, ingen drev kolon'). < br>
Se også 'Hvorfor Windows bruger tilbageslag og alt andet, der bruges fremad skråstreger' [15] [17]


Som nævnt skal du efterprocessere udgangen af ​​kommandoen for at få det korrekte vejformat, som i 'Bash-konverteringsstienavne til sed, så de undgår'. [18]


st=$(git status)
echo "${st////\}"


eller


echo "${st////\\}"

with:
         //  / /  \\}"
          ^  ^ ^  ^
          |  | |  |
          |  | |  replacement, backslash needs to be backslashed
          |  | delimiter
          |  string
      global
    substitution

Andre referencer 1


Jeg ved, at det er lidt gammelt, men du kan bruge substitution i miljøvariabler til at erstatte / med eller \:


C:> SET FILE=Java/HerpDerp/src
C:> ECHO \%FILE:/=\%
JavaHerpDerpsrc

C:> ECHO \%FILE:/=\\%
Java\HerpDerp\src

C:>


For at tage det et skridt videre kan du skrive en batchfil, der gør det til en kommando, der udsender en masse stier: (git diff --name-only HEAD~1 i følgende eksempel)


SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "usebackq delims=" \%\%i IN (`git diff --name-only HEAD~1`) DO (
  SET FILE=\%\%i
  ECHO !FILE:/=!
)
ENDLOCAL