web-dev-qa-db-ja.com

Gitで大文字と小文字のみを区別するファイル名の変更をコミットするにはどうすればいいですか?

Name.jpgからname.jpgのように、最初の文字を大文字にすることでいくつかのファイル名を変更しました。 Gitはこの変更を認識していないので、ファイルを削除して再度アップロードする必要がありました。ファイル名の変更をチェックするときにGitが大文字と小文字を区別することができる方法はありますか?ファイル自体には変更を加えていません。

1020
Gil Shulman

git mv を使用できます。

git mv -f OldFileNameCase newfilenamecase
1229
Keith Smiley

Gitには、大文字と小文字を区別するか、区別しないかを指定する設定があります:core.ignorecase。 Gitに大文字と小文字を区別するように指示するには、単にこの設定をfalseに設定します。

git config core.ignorecase false

ドキュメンテーション

git configドキュメントから

core.ignorecase

Trueの場合、このオプションはFATのように、大文字と小文字を区別しないファイルシステムでgitがよりよく動作するようにするためのさまざまな回避策を有効にします。例えば、gitがmakefileを期待しているときにディレクトリリストがMakefileを見つけた場合、gitはそれが本当に同じファイルであると仮定し、それをMakefileとして覚え続けます。

デフォルトはfalseです。ただし、 git-clone(1) または git-init(1) は、リポジトリの作成時に必要に応じてcore.ignorecase trueをプローブおよび設定します。

大文字と小文字を区別しないファイルシステム

私が知っている大文字と小文字を区別しないファイルシステムを持つ2つの最も人気のあるオペレーティングシステムは

  • Windows
  • OS X
825
user456814

SourceTreeを使う私はこれをすべてUIから行うことができました

  1. FILE.extwhatever.extに名前変更
  2. ステージ そのファイル
  3. 改名 whatever.extfile.ext
  4. ステージ そのファイル

ちょっと面倒ですが、いくつかのファイルに対してそれを実行するだけでよい場合は、かなり簡単です

104
Chris Barr

これは私がOS Xでしたことです:

git mv File file.tmp
git mv file.tmp file

それ以外の場合は「ファイルが存在します」というエラーが発生したので、2つのステップおそらくそれは--cachedなどを追加することによって一段階で行うことができます。

102
Sijmen Mulder

OSXでは、この問題を回避し、大文字と小文字を区別しないファイルシステムでの開発に関する他の問題を回避するために、ディスクユーティリティを使用してcasesensitive仮想ドライブ /ディスクイメージ。

ディスクユーティリティを実行し、新しいディスクイメージを作成し、次の設定を使用します(または必要に応じて変更しますが、大文字と小文字を区別します)。

Mac Disk Utility Screenshot

大文字と小文字を区別するFS上にあることをgitに伝えてください:

git config core.ignorecase false
42
user1821510

時々 一時的に Gitの大文字と小文字の区別を変更するのに便利です。 2つの可能な方法: -

方法1 (非常に一時的な)

1つのcheckoutコマンドの大文字と小文字の区別を無効にするためのgit -c core.ignorecase=true checkout mybranch。より一般的には、 git -c core.ignorecase=<<true or false>><<command>> となります。 (コメントにこれを示唆しているVonCの功績によるものです。)

方法2 (半永久的)

設定をより長く変更するには(例えば、元に戻す前に複数のコマンドを実行する必要がある場合):

  1. git config core.ignorecase(これは現在の設定を返します。例えばfalse).
  2. git config core.ignorecase<<true or false>> - 希望する新しい設定を設定します。
  3. ...他の複数のコマンドを実行...
  4. git config core.ignorecase<<false or true>> - 設定値を以前の設定に戻します。
27
Steve Chambers

1)ファイルName.jpgの名前をname1.jpgに変更します

2)削除したファイルをコミットするName.jpg

3)ファイルname1.jpgの名前をname.jpgに変更します

4)追加したファイルname.jpgを前回のコミットに修正する

git add
git commit --amend
15
razon

私は他の答えから以下の解決策を試みましたが、それらはうまくいきませんでした:

リポジトリがリモートでホストされている場合(GitHub、GitLab、BitBucket)、Origin(GitHub.com)でファイルの名前を変更し、トップダウン方式でファイルの名前を変更することができます。

以下の説明はGitHubに関するものですが、その背後にある一般的な考え方はあらゆるリモートリポジトリホスティングプラットフォームに当てはまるはずです。名前を変更しようとしているファイルの種類、つまりGitHubがブラウザ内で編集可能(コード、テキストなど)または編集不可能(画像、バイナリなど)と見なすファイルタイプかどうかを忘れないでください。

  1. GitHub.comにアクセスしてください。
  2. GitHub.comのリポジトリに移動して、作業中のブランチを選択します。
  3. サイトのファイルナビゲーションツールを使用して、名前を変更するファイルに移動します
  4. GitHubではブラウザ内でファイルを編集できますか?
    • a。)編集可能
      1. 「このファイルを編集する」アイコンをクリックします(鉛筆のように見えます)。
      2. ファイル名テキスト入力でファイル名を変更する
    • b。)編集不可
      1. 新しいタブで[ダウンロード]ボタンをクリックして、ファイルをコンピュータに保存します。
      2. ダウンロードしたファイルの名前を変更する
      3. GitHub.comの前のタブで、[このファイルを削除]アイコンをクリックします(ゴミ箱のように見えます)。
      4. [branchnameブランチに直接コミットする]ラジオボタンが選択されていることを確認し、[変更をコミット]ボタンをクリックします。
      5. GitHub.comの同じディレクトリ内で、[ファイルのアップロード]ボタンをクリックします
      6. コンピュータから名前を変更したファイルをアップロードする
  5. [branchnameブランチに直接コミットする]ラジオボタンが選択されていることを確認し、[変更をコミット]ボタンをクリックします。
  6. ローカルで、ブランチをチェックアウト/取得/取得する
  7. 完了
11
gmeben

@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も大文字と小文字の違いを認識せず、静的ルートディレクトリでも上記を手動で行う必要があります。

7
Anupam

マックOSXハイシエラ10.13修正ややこれ。 gitプロジェクト用に仮想APFSパーティションを作成するだけです。デフォルトではサイズ制限はなく、スペースも必要ありません。

  1. コンテナディスクが選択された状態でディスクユーティリティでは、+ボタンをクリックしてください
  2. フォーマットの下APFS(大文字と小文字を区別)を選択します
  3. Sensitiveという名前を付けます
  4. 利益
  5. オプション:Sensitiveでgitおよびln -s /Volumes/Sensitive/git /Users/johndoe/gitという名前のフォルダーを作成します。

お使いのドライブが/Volumes/Sensitive/になります

enter image description here

どのように私はGitのでは大文字と小文字が区別のみのファイル名の変更をコミットするのですか?

5
Ray Foss

私はそれらの次のステップを使いました:

git rm -r --cached .
git add --all .
git commit -a -m "Versioning untracked files"
git Push Origin master

私にとっては簡単な解決策です

4
andrewvergel

私はMacOSでこの問題に何度か直面しました。 Gitは大文字と小文字を区別しますが、Macは大文字と小文字を区別します。

誰かがファイルをコミットします:Foobar.Javaそして数日後にそれをFooBar.Javaに名前変更することにしました。最新のコードを取得するとThe following untracked working tree files would be overwritten by checkout...で失敗します

私がこれを修正したのを見たことがある唯一の信頼できる方法は、次のとおりです。

  1. git rm Foobar.Java
  2. git commit -m 'TEMP COMMIT!!'を見逃すことはできないというメッセージでそれをコミット
  3. 引く
  4. あなたの変更はそれを削除したが、他の変更はそれを改名したので(それ故問題)それは
    1. 「削除」であるあなたの変更を受け入れます
    2. git rebase --continue
  5. 今すぐあなたの回避策git rebase -i HEAD~2drop the TEMP COMMIT!!を落としてください
  6. ファイルがFooBar.Javaという名前になったことを確認します
3

あなたがたくさんのファイル名の変更をした、そしてそのうちのいくつかが単なる大文字小文字の変更であるとき、どれがどれであるかを覚えるのは難しいです。手動でファイルを "git moving"することはかなりの作業です。だから私は私のファイル名を変更するタスクの間に私がすることがあります:

  1. git以外のすべてのファイルとフォルダを別のフォルダ/リポジトリに削除します。
  2. 現在の空のgitフォルダをコミットします(これはすべてのファイルが削除されたことを示します)。
  3. すべてのファイルを元のgitフォルダ/リポジトリに戻します。
  4. 現在の空でないgitフォルダをコミットします。

これにより、どのファイルまたはフォルダの名前を変更しようとせずに、すべてのケースの問題が解決されます。

何もうまくいかなかった場合は、ディスクからファイルを削除して元に戻すためにgit rm filenameを使ってください。

0
gopal Pandey