2011-12-12 93 views
72

在我的部分的第一個承諾中被稱爲_Electronics它是以大寫字母開頭,然後我將其更改爲_electronicsgit是否不區分大小寫?

cygwin下的Git在提交新名稱後忽略了這個案例,所以我在目標回購庫中手動更改了名稱。

現在它有時會將承諾的_electronics部分更改爲_Electronics

我做錯了什麼?

+8

什麼OS是你嗎? –

+9

你使用的是什麼文件系統? –

+0

Windows與cygwin。我的服務器運行Ubuntu Linux。不知道文件系統,我猜ext3或ext2 - 我的提供者配置了最小安裝。 – JAkk

回答

64

它將被視爲2種不同的東西,但會導致您在非區分大小寫的系統上遇到問題。如果是這種情況,請確保您製表符完成任何路徑或文件名。此外,爲了改變在短短的情況下事物的名稱,這樣做:

mv file.txt temp.txt 
git add -A 
git commit -m "renaming..." 
mv temp.txt File.txt 
git add -A 
git commit --amend -m "Renamed file.txt to File.txt" 

這是更改提交它們,然後摺疊提交的明確方式。較短的方式來做到這一點是操作都在一個索引和工作文件夾:

git mv file.txt temp.txt 
git mv temp.txt File.txt 
git commit -m "Renamed file.txt to File.txt" 

這涉及到調整目錄名稱,以及:git mv and only change case of directory

+0

看起來像這是正確的(除了我從大寫字母改爲小寫) – JAkk

+0

你在Windows上試過msysgit嗎? –

+0

我偷看到它,只要我習慣了cygwin,使用cygwin更加舒服 - 感謝提示 – JAkk

87

這是要依賴於core.ignorecase配置值,在大小寫敏感的文件系統中設置爲false,在Windows上的msysgit中設置爲true。

core.ignorecase

如果爲true,此選項允許在不同的解決方法,使GIT中上不區分大小寫,如FAT文件系統更好地工作。例如,如果一個目錄列表在git需要 「Makefile」時發現「makefile」,git會認爲它確實是同一個文件,並且繼續 將它記爲「Makefile」。

缺省值爲false,除非git-clone(1)或git-init(1)將在創建存儲庫 時探測並設置core.ignorecase爲true(如果適用)。

+65

這是正確的答案。對於將來我來說,使用'git config --unset-all core.ignorecase && git config --system core。用sudo忽略錯誤。 – Znarkus

+0

@Znarkus在OS X上,你的代碼完全是我需要的。謝謝! –

+1

同上James,@Znarkus已經在OS X上發現了這個問題的解決方法,謝謝! –

21

這是容易得多:

git mv Electronics electronics -f 
git commit -m "That was easy!" 
+1

您是否在不區分大小寫的文件系統上嘗試這種方法? –

+2

@愛德華是的,OS X – Arnoud

+1

我最初讀這篇文章爲原始海報,試圖對一個文件夾進行改變格式的重命名,而不是文件。現在我重新閱讀這個,目前還不清楚。事實上,'mv -f'可以用於文件。 –

18
git config --system core.ignorecase false