Toconangoのブログ

プログラミングのユルフワ備忘録です。間違った記載等ありましたらご連絡頂けますと幸いです。

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