是否可以在一次操作中将git筛选器分支与--tree筛选器和--subdirectory筛选器一起使用

是否可以在一次操作中将git筛选器分支与--tree筛选器和--subdirectory筛选器一起使用,git,git-filter-branch,Git,Git Filter Branch,我想重写git回购协议: \Old-Repo \.git \old \path1 |-content to migrate \path2 |-unwanted \New-Repo \.git \src |-content to migrate 仅从旧路径获取内容[使用子目录过滤器] 将其写入\src中的新回购,而不是\path[使用树过滤器移动]

我想重写git回购协议:

\Old-Repo
    \.git
    \old
        \path1
            |-content to migrate
        \path2
            |-unwanted 

\New-Repo
    \.git
        \src
            |-content to migrate
  • 仅从旧路径获取内容[使用
    子目录过滤器
    ]
  • 将其写入\src中的新回购,而不是\path[使用
    树过滤器移动]
是否可以在单个筛选器分支调用中执行此操作?当我按上述顺序分别调用
过滤器分支
时,我得到了所需的结果-当我尝试同时指定
--子目录过滤器
--树过滤器
时,移动操作
--树过滤器'mkdir-p C:/tmp;mv*C:/tmp;mkdir src;mv C:/tmp/*src/'
未在结尾处完成,因此文件夹也保留在重写回购的根目录下


我想指定git应该先应用子目录过滤器,然后再应用树过滤器,这可能吗?

这两个操作都是按照这个顺序完成的。看见我现在运行的命令是:
git filter branch--tree filter'mkdir-pc:/tmp;mv*C:/tmp;mkdir src;mv C:/tmp/*src/'--tag name filter cat--子目录filter root/old/path1--prune empty--all
要诊断问题,请让树过滤器记录它所看到的内容,或者创建一个
git filter branch
的变体,在运行命令时打印命令(最简单的方法是将
-x
添加到shell选项中,尽管这会非常冗长)。这两个操作是按该顺序完成的。请参阅。不清楚这里出了什么问题。我正在运行的命令是:
git filter branch--tree filter'mkdir-pc:/tmp;mv*C:/tmp;mkdir src;mv C:/tmp/*src/'--标记名filter cat--子目录filter root/old/path1--prune empty--all
要诊断问题,请使用e-filter记录它看到的内容,或者创建一个git-filter-branch的变体,该变体在运行命令时打印命令(最简单的方法是将
-x
添加到shell选项中,尽管这会非常冗长)。