パスに空白を含むファイルをgit archiveする
My Projcet/hoge
みたいなファイルがあるとき、git archiveするには
$ git archive --format=zip master My\ Project/hoge -o diff.zip
とすれば良い。
Gitで特定コミットのファイルだけをzipで納品するコマンド - atskimura-memo
をみて、自分でも差分のみをarchiveしようと考えて、
$ git archive --format=zip master `git diff --name-only HEAD..HEAD~` -o diff.zip
としてみたところ
fatal: pathspec 'My' did not match any files
と怒られた。
$ git diff --name-only HEAD..HEAD~
を実行してみると
My Project/hoge
と表示される。
スペースの前にバックスラッシュが必要なのか?
というわけでsedしてみる
$ git diff --name-only HEAD..HEAD~ | sed -e "s/ /\\\\ /g"
My\ Project/hoge
いいんじゃないかな…
$ git archive --format=zip master `git diff --name-only HEAD..HEAD~ | sed -e "s/ /\\\\ /g"` -o diff.zip
fatal: pathspec 'My' did not match any files
何故じゃ!!
分かる人がいれば教えてください。