gitで日本語ファイルをステージエリアから削除したい
gitで日本語ファイルはエスケープされた文字列で表示される
「ファイル」という名前の日本語ファイルがあるとします。
ステータスを確認してみると、エスケープされた文字列でファイル名が表示されています。
$ git status
On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: "\343\203\225\343\202\241\343\202\244\343\203\253"
このエスケープされた文字列状態だと、ステージエリアから削除することができません。
$ git reset "\343\203\225\343\202\241\343\202\244\343\203\253"
⇨ステージエリアから削除できません。
git rm
を使っても、同じ。
$ git rm --cached "\343\203\225\343\202\241\343\202\244\343\203\253"
fatal: pathspec '\343\203\225\343\202\241\343\202\244\343\203\253' did not match any files
⇨エラーが出てしまいます。
日本語ファイルをステージエリアから削除するには
削除するためには、表示時のクォートをオフにします。
git config --global core.quotepath false
すると、日本語で表示されようになります。
$ git status
On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: ファイル
この状態でresetすると、ステージエリアから削除することができます。
$ git reset ファイル
ステータスを確認してみましょう。
$ git status
On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Untracked files: (use "git add <file>..." to include in what will be committed) ファイル nothing added to commit but untracked files present (use "git add" to track)
ステージエリアから削除できました。
reset
ではなく、以下のgit rm
でもステージエリアから削除できます。
$ git rm --cached ファイル
参考
git で文字がエスケープされた状態で表示される!? - それマグで!
蛇足
基本的にファイル名は英名にしておけば、いいだけかも。
表示時のクォートをオンにする。
$ git config --global core.quotepath true