読者です 読者をやめる 読者になる 読者になる

私が歌川です

@utgwkk が書いている

Git 管理されたファイルの履歴を書き換えて、全てのファイルをまるごと特定ディレクトリ内に移動させる

技術

tl;dr

書き換えないと死ぬという状況でなければ git mv で済ませましょう (追記)

$ git filter-branch --tree-filter \ 
  'mkdir hoge; for file in `ls | grep -v hoge`; do mv -t hoge $file;

やりたいこと

Git リポジトリのルートディレクトリ以下のファイル/ディレクトリを全て hoge/ 以下に移動させたい

main.py
requirements.txt
module/
  __init__.py

hoge/
  main.py
  requirements.txt
  module/
    __init__.py

といった感じに移動したかった

最終的にやったこと

$ git filter-branch --tree-filter \ 
  'mkdir hoge; for file in `ls | grep -v hoge`; do mv -t hoge $file;

雑に mv * hoge/ とかだとできなかった

お気持ち

意味もなく履歴を書き換えまくろうとしない方が命のためです(追記)