web-dev-qa-db-ja.com

gitは大文字と小文字を区別しませんか?

_Electronicsと呼ばれる私のパーシャルの最初のコミットメントでは、大文字で書かれていたので、それを_electronicsに変更しました。

Cygwinの下のGitは、新しい名前をコミットした後、このケースを無視したため、ターゲットリポジトリで手動で名前を変更しました。

現在では、コミットされた_electronics partialを_Electronicsに変更する場合があります。

私は何を間違えましたか?

84
JAkk

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"

これは、コミットを変更してからコミットを折りたたむ明示的な方法です。簡単な方法は、インデックスと作業フォルダーをすべて1つに操作することです。

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 case case of directory

68
Adam Dymitruk

core.ignorecase設定値に依存します。この値は、大文字と小文字を区別するファイルシステムではfalseに、Windowsのmsysgitではtrueに設定されます。

core.ignorecase

Trueの場合、このオプションはさまざまな回避策を有効にして、FATなどの大文字と小文字を区別しないファイルシステムでgitがより適切に動作するようにします。たとえば、gitが "Makefile"を期待しているときにディレクトリリストが "makefile"を見つけた場合、gitはそれが実際に同じファイルであると想定し、 "Makefile"として記憶し続けます。

デフォルトはfalseです。ただし、git-clone(1)またはgit-init(1)は、必要に応じてリポジトリの作成時にcore.ignorecaseをプローブしてtrueに設定します。

97
manojlds

これははるかに簡単です。

git mv Electronics electronics -f
git commit -m "That was easy!"
22
Arnoud
git config --system core.ignorecase false
20
Cemo

私のシナリオでは、2つのフォルダーtestsTestsがあり、Githubでは2つの別個のフォルダーとして表示されましたが、Windowsでは単一のTestsフォルダーとして表示されました。私の目的は、両方をtestsに結合することでした。

次のアプローチを使用しました。

  1. 新しいフォルダーを作成するtemp
  2. Testsからtempにすべてのコンテンツをコピーします
  3. Testsを削除
  4. 実行git rm Tests -r
  5. tempの名前をtestsに変更します
0
Jeroen Vannevel