2017-01-06 69 views
7

當一個窗口內工作命令提示符下,我所有的路徑表明主任分離用反斜槓\,使用Git命令時,所有的路徑都而不使用forwardslash /。如何更改GIT的輸出以鏡像我的命令行輸出?如何更改git目錄分隔符?

實施例不一致目錄指標;

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

添加的git的\ usr \ BIN中的工具,是我路上和周圍使用這些命令行是工作,但我仍然會碰到問題,當我試圖通過命令行復制路徑到其他Windows應用程序的打開文件對話框中。 –

+0

你爲什麼需要改變它? git bash是unix,而cmd是windows。 – CodeWizard

+0

窗口的命令,如擦除或命令rmdir以「/」分隔的文件路徑 –

回答

3

如何更改GIT的輸出,以反映我的命令行輸出?

首先,所有的git命令在git bash子殼,這也解釋了爲什麼你看到「/」執行。 A「\」是一個bash會話,這就是爲什麼它不以任何bash命令輸出使用轉義字符。

您需要使用git wrapper(在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,以檢查那些混帳(S)被發現的順序。
而更換C:\prgs\git\latest通過安裝在您的Git的路徑。

通過指定git.exesed.exe的完整路徑,您一定會使用正確的可執行文件。

+0

只是挑剔,我不相信git在bash中運行的所有內容 - 只是git.exe是針對mingw構建的。 –

+0

着色失敗了,因爲它只是一個正則表達式,它匹配非路徑元素輸出中的任何'/':( –

+0

@PeterNied是的,這是一個解決方法:Git仍然是它的核心Linux工具 – VonC

1

既然你要找什麼似乎是沒有具體「我怎麼做的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 [email protected] | sed 's/\\//\\\\/g' ; } && ws" 

這將令y OU做到這一點:

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