当它在Windows控制台中打印出路径时,是否可以使git print反斜杠而不是正斜杠?我希望能够复制它输出的路径并将其粘贴到我未来的控制台命令中。
示例输出:
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)
而不是
Java/HerpDerp/src/main/java/com/derp/messaging/
我想看看
Java\HerpDerp\src\main\java\com\derp\messaging\
甚至
Java\\HerpDerp\\src\\main\\java\\com\\derp\\messaging\\
编辑:我应该澄清这是因为在Windows控制台中使用git。此外,对我来说似乎正确的答案是使用Git Bash。
答案 0 :(得分:2)
我知道它有点旧,但您可以使用环境变量替换将/
替换为\
或\\
:
C:\> SET FILE=Java/HerpDerp/src
C:\> ECHO %FILE:/=\%
Java\HerpDerp\src
C:\> ECHO %FILE:/=\\%
Java\\HerpDerp\\src
C:\>
为了更进一步,您可以编写一个批处理文件来执行输出一系列路径的命令:(以下示例中为git diff --name-only HEAD~1
)
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "usebackq delims=" %%i IN (`git diff --name-only HEAD~1`) DO (
SET FILE=%%i
ECHO !FILE:/=\!
)
ENDLOCAL
答案 1 :(得分:2)
谢谢Lance Clark和VonC。多年来,我一直在Windows,Unix / Linux和Mac上使用Git,但我从来不了解Git如何通过Windows Command Shell运行。我遇到了这个问题,因为我在DOS命令外壳(Windows命令提示符)中正斜杠遇到了麻烦。
在DOS命令外壳中,我正在调用delete命令(“ del”)以使用“ git status”返回的文件路径删除文件,该路径中当然带有正斜杠。结果,返回错误“无效开关”,或者如果我将路径用引号引起来,则错误为“系统找不到指定的路径”。那是我进行网络搜索并遇到此堆栈溢出问题的时间。
答案使我了解了Git Bash以及Git在Windows中的实际工作方式。结果,我将尽可能切换到在Windows上使用Git Bash,而不是DOS命令外壳。这也使Windows,Linux和Mac之间的来回往返生活变得更加轻松。我的前斜线和后斜线的噩梦现在通常都比较好,而且我晚上可以入睡。 :)
以下是一些有关Git Bash的简要信息的链接,这些链接帮助我了解了它的工作原理:
答案 2 :(得分:1)
git status将通过git bash会话执行,因此它不会在路径中使用\
(如&#34; Git Bash for Windows showing/expecting file paths with forward-slashes, no drive colon&#34;)中所示。
另请参阅&#34; Why Windows Uses Backslashes and Everything Else Uses Forward Slashes&#34;
如上所述,您必须对命令的输出进行后处理才能获得正确的路径格式,例如&#34; Bash converting path names for sed
so they escape&#34;。
st=$(git status)
echo "${st////\\}"
或
echo "${st////\\\\}"
with:
// / / \\\\}"
^ ^ ^ ^
| | | |
| | | replacement, backslash needs to be backslashed
| | delimiter
| string
global
substitution