Name.jpg
からname.jpg
のように、最初の文字を大文字にすることでいくつかのファイル名を変更しました。 Gitはこの変更を認識していないので、ファイルを削除して再度アップロードする必要がありました。ファイル名の変更をチェックするときにGitが大文字と小文字を区別することができる方法はありますか?ファイル自体には変更を加えていません。
git mv を使用できます。
git mv -f OldFileNameCase newfilenamecase
Gitには、大文字と小文字を区別するか、区別しないかを指定する設定があります:core.ignorecase
。 Gitに大文字と小文字を区別するように指示するには、単にこの設定をfalse
に設定します。
git config core.ignorecase false
core.ignorecase
Trueの場合、このオプションはFATのように、大文字と小文字を区別しないファイルシステムでgitがよりよく動作するようにするためのさまざまな回避策を有効にします。例えば、gitが
makefile
を期待しているときにディレクトリリストがMakefile
を見つけた場合、gitはそれが本当に同じファイルであると仮定し、それをMakefile
として覚え続けます。デフォルトはfalseです。ただし、 git-clone(1) または git-init(1) は、リポジトリの作成時に必要に応じて
core.ignorecase
trueをプローブおよび設定します。
私が知っている大文字と小文字を区別しないファイルシステムを持つ2つの最も人気のあるオペレーティングシステムは
SourceTreeを使う私はこれをすべてUIから行うことができました
FILE.ext
をwhatever.ext
に名前変更whatever.ext
をfile.ext
にちょっと面倒ですが、いくつかのファイルに対してそれを実行するだけでよい場合は、かなり簡単です
これは私がOS Xでしたことです:
git mv File file.tmp
git mv file.tmp file
それ以外の場合は「ファイルが存在します」というエラーが発生したので、2つのステップおそらくそれは--cached
などを追加することによって一段階で行うことができます。
OSXでは、この問題を回避し、大文字と小文字を区別しないファイルシステムでの開発に関する他の問題を回避するために、ディスクユーティリティを使用してcasesensitive仮想ドライブ /ディスクイメージ。
ディスクユーティリティを実行し、新しいディスクイメージを作成し、次の設定を使用します(または必要に応じて変更しますが、大文字と小文字を区別します)。
大文字と小文字を区別するFS上にあることをgitに伝えてください:
git config core.ignorecase false
時々 一時的に Gitの大文字と小文字の区別を変更するのに便利です。 2つの可能な方法: -
方法1 (非常に一時的な):
1つのcheckout
コマンドの大文字と小文字の区別を無効にするためのgit -c core.ignorecase=true checkout mybranch
。より一般的には、 git -c core.ignorecase=
<<true or false>>
<<command>>
となります。 (コメントにこれを示唆しているVonCの功績によるものです。)
方法2 (半永久的):
設定をより長く変更するには(例えば、元に戻す前に複数のコマンドを実行する必要がある場合):
git config core.ignorecase
(これは現在の設定を返します。例えばfalse
).git config core.ignorecase
<<true or false>>
- 希望する新しい設定を設定します。git config core.ignorecase
<<false or true>>
- 設定値を以前の設定に戻します。1)ファイルName.jpg
の名前をname1.jpg
に変更します
2)削除したファイルをコミットするName.jpg
3)ファイルname1.jpg
の名前をname.jpg
に変更します
4)追加したファイルname.jpg
を前回のコミットに修正する
git add
git commit --amend
私は他の答えから以下の解決策を試みましたが、それらはうまくいきませんでした:
リポジトリがリモートでホストされている場合(GitHub、GitLab、BitBucket)、Origin(GitHub.com)でファイルの名前を変更し、トップダウン方式でファイルの名前を変更することができます。
以下の説明はGitHubに関するものですが、その背後にある一般的な考え方はあらゆるリモートリポジトリホスティングプラットフォームに当てはまるはずです。名前を変更しようとしているファイルの種類、つまりGitHubがブラウザ内で編集可能(コード、テキストなど)または編集不可能(画像、バイナリなど)と見なすファイルタイプかどうかを忘れないでください。
branchname
ブランチに直接コミットする]ラジオボタンが選択されていることを確認し、[変更をコミット]ボタンをクリックします。branchname
ブランチに直接コミットする]ラジオボタンが選択されていることを確認し、[変更をコミット]ボタンをクリックします。@Sijmenの答えと同様に、これはOSXでディレクトリの名前を変更するときに機能しました( this 別の回答役職):
git mv CSS CSS2
git mv CSS2 css
単にgit mv CSS css
を実行すると、無効な引数エラーが発生しました:fatal: renaming '/static/CSS' failed: Invalid argument
おそらくOSXのファイルシステムが 大文字と小文字を区別しない
p.sところで、Djangoを使用している場合、collectstaticも大文字と小文字の違いを認識せず、静的ルートディレクトリでも上記を手動で行う必要があります。
マックOSXハイシエラ10.13修正ややこれ。 gitプロジェクト用に仮想APFSパーティションを作成するだけです。デフォルトではサイズ制限はなく、スペースも必要ありません。
Sensitive
という名前を付けますgit
およびln -s /Volumes/Sensitive/git /Users/johndoe/git
という名前のフォルダーを作成します。お使いのドライブが/Volumes/Sensitive/
になります
私はそれらの次のステップを使いました:
git rm -r --cached .
git add --all .
git commit -a -m "Versioning untracked files"
git Push Origin master
私にとっては簡単な解決策です
私はMacOSでこの問題に何度か直面しました。 Gitは大文字と小文字を区別しますが、Macは大文字と小文字を区別します。
誰かがファイルをコミットします:Foobar.Java
そして数日後にそれをFooBar.Java
に名前変更することにしました。最新のコードを取得するとThe following untracked working tree files would be overwritten by checkout...
で失敗します
私がこれを修正したのを見たことがある唯一の信頼できる方法は、次のとおりです。
git rm Foobar.Java
git commit -m 'TEMP COMMIT!!'
を見逃すことはできないというメッセージでそれをコミットgit rebase --continue
git rebase -i HEAD~2
とdrop
the TEMP COMMIT!!
を落としてくださいFooBar.Java
という名前になったことを確認しますあなたがたくさんのファイル名の変更をした、そしてそのうちのいくつかが単なる大文字小文字の変更であるとき、どれがどれであるかを覚えるのは難しいです。手動でファイルを "git moving"することはかなりの作業です。だから私は私のファイル名を変更するタスクの間に私がすることがあります:
これにより、どのファイルまたはフォルダの名前を変更しようとせずに、すべてのケースの問題が解決されます。
何もうまくいかなかった場合は、ディスクからファイルを削除して元に戻すためにgit rm filenameを使ってください。