ファイル名を大文字と小文字を区別するように変更します。
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を使っています。
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
は不要になりました)。
上記の答えを考慮すると、 " - force"を使用して単一のコマンドで動作させることができます。
git mv --force myfile MyFile
大文字と小文字を区別しないファイルシステム(OS XやWindowsなど)で、多くのファイルの大文字化を変更したい場合があります。 git mv
コマンドを実行すると、作業が少し楽になりますが、これは私がしていることです。
git add . -A
を実行します。git add .
gitを実行して、ファイルの名前が変更されたことを確認してください。これで、ファイルの大文字を変更したと言ってコミットすることができます。
OS Xでのファイル名は大文字と小文字を区別しません(デフォルト)。これはgitの問題よりもOSの問題です。ファイルを削除して再度追加した場合は、必要なものを入手するか、別の名前に変更してから元の名前に戻してください。
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
を更新するだけです。
"。git"ディレクトリを開いてから "config"ファイルを編集することができます。 "[core]"の下に "ignorecase = true"を設定すれば完了です。
MacOSでgit mv
ファイルを小文字にするには:
for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
フォルダ内のすべてのファイルが小文字になります。
この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)