gitを触ってみる(ファイルの移動と改名の扱われ方)
gitを触ってみました。要件としては以下の通りです。
まずgit config。UTF-8のファイル名を扱うものとして設定してみます。
MacOSX上でUTF-8の設定をしてgit add .してみました。
git config --global user.name "nawolets" git config --global i18n.commitencoding UTF-8 git config --global i18n.logoutputencoding UTF-8
ところがgit statusを見たところ、ファイル名が\344などとなってしまいます。UTF-8として扱われてはいるようですが...。とりあえずgoー。
gaulm:test nawolets$ du -ah 52M ./むにゅう.zip 52M . gaulm:test nawolets$ git init Initialized empty Git repository in /Volumes/MacVolume2/nfsexports/Trapezium-ed/test/.git/ gaulm:test nawolets$ git add . gaulm:test nawolets$ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: "\343\202\200\343\201\253\343\202\205\343\201\206.zip" # gaulm:test nawolets$ git commit -m "むにゅう追加" [master (root-commit) 842be0f] むにゅう追加 1 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\343\202\200\343\201\253\343\202\205\343\201\206.zip" gaulm:test nawolets$ du -ah 0B ./.git/branches <略> 51M ./.git/objects/b2/aa646d0ff3af4c53e8c98bfdc6a05326ed87a4 <略> 52M ./むにゅう.zip 102M . gaulm:test nawolets$
できました。つぎ、改名してみます。
gaulm:test nawolets$ git mv むにゅう.zip うにゅう.zip gaulm:test nawolets$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # renamed: "\343\202\200\343\201\253\343\202\205\343\201\206.zip" -> "\343\201\206\343\201\253\343\202\205\343\201\206.zip" # gaulm:test nawolets$ git commit -m "うにゅうに改名" [master a95df47] うにゅうに改名 1 files changed, 0 insertions(+), 0 deletions(-) rename "\343\202\200\343\201\253\343\202\205\343\201\206.zip" => "\343\201\206\343\201\253\343\202\205\343\201\206.zip" (100%) gaulm:test nawolets$ du -ah 0B ./.git/branches <略> 51M ./.git/objects/b2/aa646d0ff3af4c53e8c98bfdc6a05326ed87a4 <略> 52M ./うにゅう.zip 102M . gaulm:test nawolets$
おおっ。どうやらリポジトリ上でもRemove&CreateではなくRename(Move)として扱われているみたいです。
あとは日本語名。うにゅうを削除してcheckoutしてみます。
gaulm:test nawolets$ rm うにゅう.zip gaulm:test nawolets$ git checkout うにゅう.zip gaulm:test nawolets$ ls うにゅう.zip gaulm:test nawolets$
素晴らしい。ところでgit statusなどで日本語がうまく表示されないのはさてどうしたものか...。→調べたら書いてありました。
git config --global core.quotepath falseを使うのですね。
gaulm:test nawolets$ git mv うにゅう.zip むにゅう.zip gaulm:test nawolets$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # renamed: "\343\201\206\343\201\253\343\202\205\343\201\206.zip" -> "\343\202\200\343\201\253\343\202\205\343\201\206.zip" # gaulm:test nawolets$ git config --global core.quotepath false gaulm:test nawolets$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # renamed: うにゅう.zip -> むにゅう.zip # gaulm:test nawolets$