git mvで大文字を含むディレクトリ名を変更できない
はじめに
git mvでリポジトリ内の大文字のディレクトリ名を変更しようとしたところ、できませんでした。
準備
cd ~
mkdir repo && cd repo
git init
mkdir Capital
echo "hogehoge" -> Capital/Hoge.txt
git add .
git commit -m "first commit"
上から順に実行すると、
repo
└── Capital \\大文字ディレクトリ
└── Hoge.txt \\大文字textファイル
こんな感じの実験環境ができます。
ハマったところ
textファイルの「 Hoge.txt 」を小文字にします。
git mv Capital/Hoge.txt Capital/hoge.txt
実行すると、
repo
└── Capital
└── hoge.txt
ちゃんと小文字になりました。
コミットしておきましょう。
git commit -m "renamed Hoge.txt to hoge.txt"
次にディレクトリ「 Capital 」を小文字にします。
git mv Capital/ lowercase/
同様に実行すると・・・
fatal: renaming 'Capital' failed: Invalid argument
エラーが・・・
解決策
1 : 一時的な空ディレクトリを作る。
mkdir tmp
2 : 大文字ディレクトリ(Capital)の中身(hoge.txt)を一時的なディレクトリ(tmp)にgit mvで移す。
git mv Capital/* tmp/
こんな感じになる。
repo
├── Capital
└── tmp
└── hoge.txt
3 : 空になった大文字ディレクトリ(Capital)を消す。
rm -r Capital
4 : 一時的なディレクトリ(tmp)の名称 をgit mvで好きな名称(lowercase)に変更。
git mv tmp lowercase
コミットしておく。
git commit -m "renamed Capital to lowercase"
5 : 解決!
repo
└── lowercase
└── hoge.txt
コミット履歴はどうなっているか
好き勝手にディレクトリを作ったり、消したりしました。
コミット履歴がおかしなことになっていないか(?)確認してみます。
❯ git show
commit 585776e1411a08f42aab249f37cd008882f19b0c (HEAD -> master)
Author: hoge
Date: hoge
renamed Capital to lowercase
diff --git a/Capital/hoge.txt b/lowercase/hoge.txt
similarity index 100%
rename from Capital/hoge.txt
rename to lowercase/hoge.txt
本来やりたかった
git mv Capital/ lowercase/
ができた場合と同じ履歴になりました。
よくわからん、、、
Author And Source
この問題について(git mvで大文字を含むディレクトリ名を変更できない), 我々は、より多くの情報をここで見つけました https://qiita.com/kthimuo/items/5210bf6a76ae77b3a5f8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .