web-dev-qa-db-ja.com

Gitのファイル名の大文字と小文字の変更

ファイル名を大文字と小文字を区別するように変更します。

git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js

ご覧のとおり、gitはこれにフィットします。私はちょうど普通の古いmvコマンドを使って名前を変更しようとしましたが、gitは名前を変更しません(新しい名前のまたは) 。

同じ名前の大文字と小文字が異なるようにファイルを変更する方法はありますか。私はzsh 4.3.15を使ってgit 1.7.9.1でMac OS X 10.7.3を使っています。

394
knpwrs

Git 2.0.1以降(2014年6月25日)、agit mvは、大文字と小文字を区別しないOSで動作します。

commit baa37bf by David Turner(dturner-tw を参照

mv:大文字と小文字を区別しないファイルシステムの大文字と小文字を修正するために名前の変更を許可します

大文字と小文字を区別しないファイルシステムの「git mv hello.txt Hello.txt」は、常に「destination already exists」エラーをトリガーします。これら2つの名前は、ファイルシステムの観点から同じパスを参照し、ユーザーに「--force "インデックスと次のコミットで記録されたパスの大文字と小文字を修正する場合。

このケースを検出し、「--force」を必要とせずに許可します。

git mv hello.txt Hello.txtは正常に機能します(--forceは不要になりました)。

453
VonC

上記の答えを考慮すると、 " - force"を使用して単一のコマンドで動作させることができます。

 git mv --force myfile MyFile
430

大文字と小文字を区別しないファイルシステム(OS XやWindowsなど)で、多くのファイルの大文字化を変更したい場合があります。 git mvコマンドを実行すると、作業が少し楽になりますが、これは私がしていることです。

  1. デスクトップといってもいいように、すべてのファイルをディレクトリの外に移動してください。
  2. すべてのファイルを削除するには、git add . -Aを実行します。
  3. デスクトップ上のすべてのファイルの名前を正しい大文字に変更します。
  4. すべてのファイルを元のディレクトリに戻します。
  5. git add . gitを実行して、ファイルの名前が変更されたことを確認してください。

これで、ファイルの大文字を変更したと言ってコミットすることができます。

78
MrHus

OS Xでのファイル名は大文字と小文字を区別しません(デフォルト)。これはgitの問題よりもOSの問題です。ファイルを削除して再度追加した場合は、必要なものを入手するか、別の名前に変更してから元の名前に戻してください。

59
larsks

OPは "Gitのファイル名の大文字/小文字の変更"についてです:

プロジェクト内のファイル名の大文字化を変更しようとしているのであれば、forcegitから名前変更する必要はありません。 IMO、私のIDE /エディタから大文字化を変更して、名前の変更を反映するようにgitを正しく設定するようにしたいと思います。

デフォルトでは、gitテンプレートは大文字と小文字を区別しないように設定されています(gitの大文字と小文字は区別されません)。デフォルトのテンプレートを使用していることを確認するには、--getを使用して指定したキーの値を取得します。 --local--globalを使って、あなたのローカルのgitリポジトリの設定からグローバルに設定key-valueを取得するかどうかを指定します。あなたのグローバルキーcore.ignorecaseを検索したい場合の例として、

git config --global --get core.ignorecase

これがtrueを返す場合は、必ず次のように設定してください。

git config --global core.ignorecase false

(あなたがグローバルを変更するための適切なパーミッションを持っていることを確認してください)そしてあなたはそれを持っています、今あなたのgitはCapitalisationsを無視せず、それらを変更として扱います。

あなたが多言語プロジェクトに取り組んでいて、すべてのプロジェクトがgitによって大文字と小文字を区別するものとして扱われるべきではないと思うならば、ローカルのcore.ignorecaseを更新するだけです。

21
Segmented

"。git"ディレクトリを開いてから "config"ファイルを編集することができます。 "[core]"の下に "ignorecase = true"を設定すれば完了です。

MacOSでgit mvファイルを小文字にするには:

for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done

フォルダ内のすべてのファイルが小文字になります。

1
softarn

このpythonスニペットは、ディレクトリ内のすべてのファイルを小文字にするためにgit mv --forceします。例:foo/Bar.jsは、git mv foo/Bar.js foo/bar.js --forceによってfoo/bar.jsになります。

あなたの好みに合わせて修正してください。

import os
import re

searchDir = 'c:/someRepo'
exclude = ['.git', 'node_modules','bin']
os.chdir(searchDir)

for root, dirs, files in os.walk(searchDir):
    dirs[:] = [d for d in dirs if d not in exclude]
    for f in files:
        if re.match(r'[A-Z]', f):
            fullPath = os.path.join(root, f)
            fullPathLower = os.path.join(root, f[0].lower() + f[1:])
            command = 'git mv --force ' + fullPath + ' ' + fullPathLower
            print(command)
            os.system(command)
1
blented