簡體   English   中英

Git diff在文件中失敗,路徑中帶有下划線

[英]Git diff fails on file with underscore in path

我正在運行Windows 7,我有最新版本的git(2.7.2.windows.1)。 我之前使用Windows PowerShell作為git操作的終端,沒有任何問題。 最近,我決定改用Git Bash,但我遇到了一個重大問題。

我的項目有一個目錄(其中有許多子目錄),其名稱只是一個下划線。 每當我嘗試在該目錄中的文件上運行git diff時,我都會收到以下錯誤:

$ git diff _/css/templates/jquery.tag-editor.css fatal: Invalid object name '_C'.

據我所知,下划線是文件/目錄名中完全有效的字符,並且在該目錄中選項卡完成工作正常,所以我知道終端可以在其中“看到”。 此外,該項目的其他貢獻者,他們都運行OSX,沒有這個問題。 當我運行一個簡單的git diff而沒有指定任何單個文件時,它工作正常,並且愉快地包含下划線目錄中任何已更改文件的diff。 它也可以,如果我cd到下划線目錄,並運行git diff在那里,讓我傳遞給它的路徑不包括下划線。

究竟發生了什么阻止我在這些文件上運行git diff 當我嘗試這樣做時,“C”來自錯誤消息中的哪個位置?

更新

當我運行git checkout -- _/css/templates/jquery.tag-editor.css來丟棄對該文件的更改時,這是我看到的錯誤:

error: pathspec '_C:/Program Files/Git/css/templates/jquery.tag-editor.css' did not match any file(s) known to git.

C:\\Program Files\\Git是我的Git安裝目錄。 顯然,部分路徑被解釋為引用Git安裝目錄? 是什么導致這種情況發生?

您遇到的問題基於MinGW / Msys2Posix路徑轉換

  • 在git-bash上嘗試加倍斜杠: git diff _//css/templates/jquery.tag-editor.css或使用反斜杠(需要在git-bash中進行轉義): git diff _\\\\css\\\\templates\\\\jquery.tag-editor.css或prepend MSYS_NO_PATHCONV=1MSYS_NO_PATHCONV=1 git diff _/css/templates/jquery.tag-editor.css
  • 在CMD上你應該使用反斜杠而不是斜杠: git diff _\\css\\templates\\jquery.tag-editor.css或者加一個斜杠,就像git-bash一樣

為了防止轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM