将所有root移动到子文件夹

时间:2016-02-15 16:35:33

标签: git

在我的git repo中,应用程序位于根文件夹中,如

.gitignore
pom.xml
data/
src/
README.md
...

由于应用程序的重新设计(一部分是引入父pom),我想将所有内容移动到子文件夹中,例如:调用系统,然后创建第二个文件夹(例如,称为api):

system/
    .gitignore
    pom.xml
    data/
    src/
    README.md
    ...
api/
    src
    ...
...

将所有内容移至system的最佳方式是什么? git mv对于根目录中的每个文件/目录都足够吗?

4 个答案:

答案 0 :(得分:0)

我首先使用git ls-files获取git跟踪的所有文件,然后循环遍历它们,将每个文件移动到新的system/目录:

git ls-files | for f in $(cat -); do git mv $f system; done

答案 1 :(得分:0)

只需将所有内容(.git目录除外)移动到新文件夹中,运行git add --all并提交即可。

答案 2 :(得分:0)

就我而言,本要点描述的解决方案对我有用(并且保留了移动文件夹的子目录结构):https://gist.github.com/ajaegers/2a8d8cbf51e49bcb17d5

相关命令为:for file in $(ls | grep -v 'system'); do git mv $file system; done;

答案 3 :(得分:0)

为了改进 Markus 和 tlehman 的分析器以使其与子目录一起工作,我做了这个 将所有内容移动到名为“subdir”的文件夹

git ls-files | \
        for f in $(cat -); do
                mkdir -p $(dirname "subdir/$f")
                git mv "$f" "subdir/$f"
        done

然后运行

git clean -fd

删除旧的目录条目。

提示:在 Zsh 中,您可以使用 alt + enter 跨越多行。 Bash 似乎没有等价物。 (我想您可以用 ;\ 结束该行,并且您可以添加更多命令)