使用远程添加时使用Git Bash for Windows的错误路径?

时间:2017-03-21 22:09:28

标签: git bash cygwin msys

我有一些像这样的bash代码:

repo="/mnt/shared/my/repo path sometimes with spaces.git"
echo "\$repo = $repo"
git remote add origin "${repo}"
git remote -v

其中/mnt/shared是在git cygwin fstab文件中创建的网络驱动器的挂载点,工作正常。我可以使用ls通过Git bash shell与它进行交互,并且从中推送和拉回存没有问题。

我在循环中使用上面的代码来维护一大堆repos,如果我的repo变量如上所述没有任何特殊字符(除了空格,这不会影响这种情况)所有),我得到以下输出:

$repo = /mnt/shared/my/repo path sometimes with spaces.git
origin //unc-path/to/mountpoint/my/repo path sometimes with spaces.git (fetch)
origin //unc-path/to/mountpoint/my/repo path sometimes with spaces.git (pull)

$repo = /mnt/shared/my/repopathnospaces.git
origin //unc-path/to/mountpoint/my/repopathnospaces.git (fetch)
origin //unc-path/to/mountpoint/my/repopathnospaces.git (pull)

但是,如果repo变量包含通常需要转义的任何特殊字符(再次,由于某种原因除了空格),那么我得到我实际要寻找的输出(我想要的以上情况也是如此):

$repo = /mnt/shared/my/repo path with [brackets].git
origin /mnt/shared/my/repo path with [brackets].git (fetch)
origin /mnt/shared/my/repo path with [brackets].git (pull)

$repo = /mnt/shared/my/repopathwith[brackets].git
origin /mnt/shared/my/repopathwith[brackets].git (fetch)
origin /mnt/shared/my/repopathwith[brackets].git (pull)   

注意它是如何将/mnt/shared挂载点保留在路径中的?我的问题是,为什么在第一种情况下转换到UNC路径(没有特殊字符)?我怎样才能让它始终保持mountpoint相对路径?

我使用的是我认为最新版本的Git Bash for Windows,如果有帮助的话,正在运行uname会给我MINGW64_NT-6.1

0 个答案:

没有答案