在我的git repo中,应用程序位于根文件夹中,如
.gitignore
pom.xml
data/
src/
README.md
...
由于应用程序的重新设计(一部分是引入父pom),我想将所有内容移动到子文件夹中,例如:调用系统,然后创建第二个文件夹(例如,称为api):
system/
.gitignore
pom.xml
data/
src/
README.md
...
api/
src
...
...
将所有内容移至system
的最佳方式是什么? git mv对于根目录中的每个文件/目录都足够吗?
答案 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 似乎没有等价物。 (我想您可以用 ;\
结束该行,并且您可以添加更多命令)