git 将所有内容向上移动一级,适用于所有分支

Mat*_*fou 4 git git-filter-branch

我想将 git 存储库中的所有内容向上移动一级,并且需要将其应用于我拥有的每个分支。从字面上看,我有:

+--repo
+----+.git
+----+folder
+--------+ A
+--------+ B
Run Code Online (Sandbox Code Playgroud)

我只想:

+--repo
+----+.git
+----+A
+----+B
Run Code Online (Sandbox Code Playgroud)

这篇文章如何将所有 git 内容在文件夹层次结构中向上移动一级?有一个很好的答案,建议这样做:

git mv folder/* ./ -k
Run Code Online (Sandbox Code Playgroud)

现在我如何处理所有分支?我能想到:

  • 为主人做git mv,然后git rebase为所有人,在主人上

  • git mv为所有分支做吗?

一个比另一个有优势吗?我也看到了一些基于git filter-branch --index-filter(answer here ) 的答案但不明白如何将其应用于我的案例。

谢谢!

Von*_*onC 7

我会使用newgit filter-repo,它确实取代了旧的git filter-branch或 BFG

自带很多用法示例,包括基于路径的过滤,以便您将文件夹内容移动到顶部(假设顶部目录仅包含文件夹)

cd /path/to/second/clone
git filter-repo --path-rename folder/:
Run Code Online (Sandbox Code Playgroud)

默认情况下,git filter-repo适用于所有分支。