web-dev-qa-db-ja.com

Git:ファイル名の変更

フォルダの名前を「Frameworks」から「frameworks」に変更したかったのですが、gitでは新しい小文字の名前を追加できませんでした。ファイル名の大文字と小文字を区別しないと思いますか?

git add frameworks/ -f役に立たなかった

51
Erik Aigner

あなたが試すことができます:

  • "git mv -f foo.txt Foo.txt"(注:これは git 2.0.1以降は不要
  • 設定ファイルでignorecaseをfalseに設定します。

しかし、ケースの問題(たとえばWindowsの場合)は msysgit issue 228 に記載されています(これもまた、これは 今-2014年6月-git 2.0.1で動作します

nTFSに加えてGitセマンティクスのようなUnixを強制する設定ファイルには、常にignorecaseをfalseに設定するオプションがあります。
Gitはこの動作をサポートしていますが、デフォルトではありません-NTFSの観点からはa.txtA.txtは同じものです-したがって、Gitはほとんどのユーザーが期待するようにそれを維持しようとします

より良い回避策として、次のことができます

git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

、これもディスクに保存されているファイルの大文字と小文字を変更します。

このブログ投稿 MacOでの同じ問題を示しています リベース中:

Mac OS Xファイルシステムのデフォルトでは、大文字と小文字は区別されません。 FFFFFF.gifffffff.gifと同じです。

Gitインデックスからではなく、ファイルシステムからのみ問題のファイルを削除する場合は、問題のブランチをマージして、何も起こらなかったかのようにファイルを復元させることができます。

手順は非常に簡単です。

$ rm file/in/question.gif
$ git merge trunk

とにかく git mvの意味を覚えておいてください

mv oldname newname
git add newname
git rm oldname

なので、newnameoldnameが競合する場合は、それらを異なるものにする必要があります(たとえそれが短期間であっても)、したがってgit mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

97
VonC

GithubでHostを使用している場合は、そのWebサイトで名前変更機能を使用できます。 5つのファイルの大文字と小文字を変更する必要があり、それが本当にうまく機能していることがわかりました。

2
kvz

私は同様の問題を抱えていて、リモートリポジトリで変更するための新しいフォルダー名(大文字と小文字の違い)を取得できませんでした。最も簡単な解決策は、ファイルをリポジトリから移動してコミットすることであることがわかりました。削除アクションのトリガー。次に、再度追加します。追加すると、適切なケースが含まれています。

1
David