【问题标题】:How to change the git directory delimiter?如何更改 git 目录分隔符?
【发布时间】:2017-05-21 14:10:27
【问题描述】:

在 Windows 命令提示符下工作时,我的所有路径都使用反斜杠 \ 指示导演分隔符,当使用 GIT 命令时,所有路径都使用正斜杠 /。如何更改 GIT 的输出以镜像我的命令行输出?

目录指标不一致的示例;

D:\git\demo>git status --s
A  test/subdir/foo.txt

【问题讨论】:

  • 将 git\usr\bin 中的工具添加到我的路径并从命令行使用它们是一种解决方法,但是当我尝试将路径从命令行复制到其他路径时仍然遇到问题windows 应用程序的打开文件对话框。
  • 为什么要改? git bash 是 unix,而 cmd 是 windows。
  • windows 命令(如擦除或 rmdir)不适用于“/”分隔的文件路径
  • - 我想用windows命令行
  • 大多数 Windows 命令都可以使用斜线分隔的路径,只要它们开始不是以斜线。底层 API 与正斜杠完全兼容。我建议使用正斜杠,然后以另一种方式寻求帮助(“某某不能使用像 test/subdir/foo.txt 这样的文件名 - 我该如何解决这个问题?”)。否则你将花费所有时间与 git 和 bash 作斗争。

标签: windows git command-line-interface


【解决方案1】:

如何更改 GIT 的输出以镜像我的命令行输出?

首先,所有 git 命令都在 git bash 子 shell 中执行,这就解释了为什么你会看到“/”。 '\' 是 bash 会话的转义字符,这就是为什么它不在任何 bash 命令输出中使用。

您需要使用 git 包装器(在您的 PATH 中设置 git.pat)才能将任何 / 替换为 \

git.bat:

C:\prgs\git\latest\bin\git.exe %*|C:\prgs\git\latest\usr\bin\sed.exe -e 's:/:\\\\:'

确保git.bat%PATH% 中设置之前 git.exe:输入where git 以检查发现git 的顺序。
并将 C:\prgs\git\latest 替换为您的 Git 安装路径。

通过指定git.exesed.exe 的完整路径,您一定会使用正确的可执行文件。

【讨论】:

  • 只是吹毛求疵,我不相信 git 在 bash 中运行所有东西——只是 git.exe 是针对 mingw 构建的。
  • 颜色丢失了,因为它只是一个正则表达式,它匹配非路径元素输出中的任何/ :(
  • @PeterNied 是的,这是一种解决方法:Git 的核心仍然是 Linux 工具。
  • @PeterNied 您是否有特定问题需要您使用 \ 而不是 / 来获取 Git 输出?
  • @VonC windows 命令(例如erase 或 rmdir)不适用于“/”分隔的文件路径,我想从 git log --stat 或 git status 的输出中获取
【解决方案2】:

由于您要查找的似乎不是“如何让 Git 在文件路径中使用 \”,而是“如何让 Git 使用 \ 生成文件路径”,您可以通过管道传递通过sed(打包在 Git Bash 中)输出,如下所示:

$ git status --s | sed 's/\//\\/g'
 M dir\file.py
?? dir\input001.txt
?? dir\output001.txt

为了避免每次都输入sed,您可以配置一个 Git 别名来为您执行此操作:

[alias]
    ws = "!ws() { : git status ; git status --short $@ | sed 's/\\//\\\\/g' ; } && ws"

这会让你这样做:

$ git ws
 M dir\file.py
?? dir\input001.txt
?? dir\output001.txt

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 2012-11-29
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2015-05-07
    • 2011-04-13
    相关资源
    最近更新 更多