web-dev-qa-db-ja.com

Windowsでファイルの大文字と小文字を変更しますか?

Gitで制御されるコードベースには、名前を変更したいファイルがいくつかあります。具体的には、たとえばsourceCode.JavaSourceCode.Javaになるように、ファイルの大文字と小文字を変更するだけです。キャッチ:私はWindowsボックスを使用していますが、ファイルシステムはそれらが同じファイル名であると考えています。

WindowsとGitでその変更を認識してチェックインするにはどうすればよいですか?

182
Electrons_Ahoy

方法については、こちらをご覧ください。

gitで大文字と小文字の変更を無視する方法

または:

git mv -f name.Java Name.Java
303
Igor Zevaka

FATファイルシステムを使用している場合、唯一の選択肢は2段階の名前変更を行うことです。

  1. sourceCode.Javaの名前をanything.you.likeに変更します
  2. anything.you.likeの名前をSourceCode.Javaに変更します

Perforceを使用していた頃、まさにこの問題があり、これが唯一の解決策でした。

46
ChrisF

次の手順により、Windowsでケースを変更できました。

  • 追加 ignorecase = falseから[core] in .git/config;
  • 名前を変更するファイルをプロジェクトディレクトリから移動します。
  • 削除をインデックスに追加します。
  • すべてのファイルを元の場所に戻し、ファイルやディレクトリの大文字と小文字を変更します。
  • すべての「新しい」ファイルをインデックスに追加します。
  • 削除する ignorecase = false最初のステップで追加されました。

この方法では、名前の変更を含む単一のコミットがあり、簡単に変更できます。ディレクトリ全体。

26

注意してください。これを行うと、マージできない変更が発生する可能性があります。 Gitは、古い大文字の名前と新しい小文字の名前が同じファイルであるかどうかを判断できないため、Windowsでのマージ時に混乱します(Gitの場合は違いますが、ファイルシステムの場合は違います)。マージするには、マージする前にファイルを削除するなど、手動で回避する必要があります。

同じ名前で大文字小文字が異なるファイルのGitリベースの問題 を参照してください

この問題があなたのプロジェクトに従来とは異なる名前のファイルを置くことよりもずっと悪いかどうかはわかりませんが、最終的にすべてをマージする必要のある多くのブランチを持つ多くのユーザーがいるかどうかを知る価値はあります。

6
jwg

NTFS(またはFAT)では、単一のgit mvコマンドは問題を解決しません。この質問は機能するテクニックを示しています: git mv and only case case of directory

1
Rainer Blome