我想将git存储库中的所有内容上移一个级别,并需要将其应用于我拥有的每个分支。从字面上看,我有:
+--repo
+----+.git
+----+folder
+--------+ A
+--------+ B
我只想:
+--repo
+----+.git
+----+A
+----+B
此帖子How can I move all git content one-level up in the folder hierarchy?有一个不错的答案,建议您这样做:
git mv folder/* ./ -k
现在如何处理所有分支?我可以想到:
在主服务器上先执行git mv
,然后对所有主机进行git rebase
对所有分支机构使用git mv
吗?
一个人比另一个人有优势吗?我还看到了一些基于git filter-branch --index-filter
(答案here)的答案,但不了解如何将其应用于我的案例。
谢谢!
答案 0 :(得分:6)
我会使用new git filter-repo
的does replace the old git filter-branch
or BFG。
many usage examples随附,包括基于路径的过滤,以便您将文件夹内容移至顶部(假设顶部目录仅包含文件夹)
cd /path/to/second/clone
git filter-repo --path-rename folder/:
默认情况下,git filter-repo
适用于所有分支。