4

次のディレクトリにgitリポジトリがありますproject

[~/project]$ ls
a  b  c

すべてをディレクトリのサブディレクトリに移動したいprojectので、次のようになります。

[~/project]$ ls
subdir
[~/project]$ cd subdir
[~/project/subdir]$ ls
a  b  c

通常git mvは動作しますが、歴史的なコミットが常に最初からそのサブディレクトリに対して行われたかのように見せたいです。これを行う方法はありますか?

4

1 に答える 1

5

私が望むことのように見えfilter-branchます:

git filter-branch --tree-filter \
        'mkdir subdir; \
        find -maxdepth 1 \
            -not -name . \
            -not -name .git \
            -not -name subdir \
            -print0 \
        | xargs -0 -I{} mv {} subdir' \
    -d /tmp/whatever -- --all

その-d /tmp/whatever部分は、tmpfs ファイルシステムでコマンドを実行するためのものであり、ディスク IO が大量に発生することはありません。

(まれ/tmpに tmpfs としてマウントされないことがあります。 で確認できますmount | grep tmp。)

于 2012-10-11T15:14:49.843 に答える