仅在没有工作目录的 git 索引中移动文件



为了准备将多个存储库滚动到单个存储库中,我想遍历我的整个存储库历史记录,并在每次提交中foo/将所有内容移动到子目录中。

快速(至少比--tree-filter快(的方法似乎是使用filter-branch--index-filter过滤器。但是,使用此方法,您只有要处理的索引,而不是工作树。那么我将如何添加一个新目录并将每个提交的子树的所有文件移动到其中呢?

我基本上正在寻找相当于git rm --cached,但git mv似乎没有提供此选项。

没有等价的 git mv --cachedgit mv --after(请参阅hg mv --after进行比较(。 在我看来,应该有,但没有。

所以我写了一个。 这有点奶酪味,但它应该适用于您的情况,前提是您没有名称中包含 control-A 字符的文件。 如果你想移动文件的整个子树,你可能想要把它花哨起来,也许用shell脚本以外的其他东西来写它。

最新更新