ケースでGitに変更を無視させる方法は?


106

ここで何が行われているのかよくわかりませんが、リポジトリ内の特定のファイルが名前の大文字と小文字を変更することがあります。例えば、:

前: File.h

後: file.h

私はこれがなぜ起こっているのか本当に気にしませんが、これによりgitはそれを新しいファイルであると考え、それからファイル名を変更する必要があります。gitに大文字小文字の変更を無視させることはできますか?

[編集] 変更後にファイルを開いて保存するときに最も頻繁に発生するように思われるため、その特定のファイルで何か奇妙なことがVisual Studioで行われているようです。VSのバグを修正する方法はありませんが、gitはもう少し能力があると思います。


1
Re:すべて小文字でファイルを保存するVisual StudioどのバージョンのVisual Studioを使用していますか?最後に、2008年版の方が良いように見えることを確認しました。2005年には、ソリューションエクスプローラーではなくデバッガーを介してファイルを開いたときにバグが発生するように見えました。
Adam Mitz

実際、これは2005年です。しばらくアップグレードすることはできません。
1800情報

回答:


177

バージョン1.5.6以降ignorecase、の[core]セクションで利用可能なオプションがあります.git/config

たとえば追加 ignorecase = true

1つのリポジトリのみを変更するには、そのフォルダーから次のコマンドを実行します。

git config core.ignorecase true

グローバルに変更するには:

git config --global core.ignorecase true

21
グローバルに適用するには、git config core.ignorecase trueまたはgit config --global core.ignorecase true
アーロンジェンセン

@graywh:git-configのcore.ignorecase(kernel.org/pub/software/scm/git/docs/git-config.html)に記載されています
Ben Lings

4
おかげで、gitが私のケースの変更を考慮に入れなかった理由をようやく見つけました。ignorecase = falseトリックをした、それはtrue-_- にデフォルト設定された
アレックスC

15

次のコマンドを使用すると、gitにファイル名の変更を強制することができます。

git mv --cached name.txt NAME.TXT

これは、Windowsパーティションのチェックアウトされたコピーのファイルの大文字と小文字を変更しませんが、gitは大文字と小文字の変更を記録し、その変更をコミットできます。今後のチェックアウトでは、新しいケースが使用されます。


1
「エラー:不明なオプション `cached '。」次のドキュメントにも記載されていません:git-scm.com/docs/git-mv
Alex

12

Windows用のgitバージョン1.6.1.9では、configの "ignorecase = true"がデフォルトですでに設定されていることがわかりました。


7
はい、Javaファイルで作業する場合は、この設定をfalseに設定する必要があります。そうでない場合、そのようなリファクタリング(HTMLParserクラスがHtmlParserになる、またはその逆)を行うときに問題が発生する可能性があります。
PhiLho 2012年

gitバージョン2.10.1.windows.1でも同じ
Kars Barendrecht

3
私はこれが古いことを知っていますが、Windowsは大文字と小文字を区別しないオペレーティングシステムであるため、ignorecaseをfalseに設定するのは無意味です。これは、Javaまたは(gasp!)C#を使用しているかどうかに関係なく適用されます。
ingyhere

5

質問で説明されている状況は、Mac OS X、Gitバージョン> = 1.7.4(私は思う)で再発しています。解決策は、ignorecase = falseを設定し、小文字のファイル(Visual Studioではなくgitがそのように変更したファイル)の名前を手動でUsualCaseに戻すことです(つまり、 'mv myname MyName')。

詳細はこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.