git mv でディレクトリの大文字と小文字のみを変更する 質問する

git mv でディレクトリの大文字と小文字のみを変更する 質問する

似たようなものを見つけたが質問問題に対する答えが見つかりませんでした

ディレクトリ名をFOOからfooに変更しようとするとgit mv FOO foo

fatal: renaming 'FOO' failed: Invalid argument

わかりました。それで試してみますgit mv FOO foo2 && git mv foo2 foo

しかし、コミットしようとするgit commit .

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)

ディレクトリを追加してもgit add foo何も変わらず、git commit .同じメッセージが再度表示されます。

何が間違っているのでしょうか? 大文字と小文字を区別するシステム (OSX) を使用していると思ったのですが、ディレクトリの名前を変更できないのはなぜでしょうか?

ベストアンサー1

大文字と小文字を区別しない環境です。さらに、 なしで追加すると、Git が理解する の-A削除側は処理されません。警告! これを実行するときに、他の変更や追跡されていないファイルがないことを確認してください。そうしないと、この変更の一部としてコミットされてしまいます。まず、これを実行してから実行してください。続行: これを回避するには、次の操作を実行します。mv git stash -ugit stash pop

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

これは、作業ディレクトリを変更し、コミットし、その後 2 つのコミットを折りたたむという、長々とした方法です。インデックス内のファイルを移動するだけで済みますが、git を初めて使用する人にとっては、何が起こっているのかが十分に明確ではない可能性があります。短縮版は次のとおりです。

git mv foo foo2
git mv foo2 FOO
git commit -m "changed case of dir"

コメントの 1 つで提案されているように、(git rebase -i HEAD~5間違ったケースが 5 コミット前に導入された場合) 対話型のリベースを実行して、そのケースを修正し、間違ったケースが履歴のどこにも表示されないようにすることもできます。これを実行する場合は注意が必要です。それ以降のコミット ハッシュは異なり、他の人はブランチの最近の過去を使用して作業をリベースまたは再マージする必要があるためです。

これはファイル名の修正に関連しています:git は大文字と小文字を区別しないのですか?

おすすめ記事