首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用git-filter-repo将一个repo作为子目录合并到另一个目录中。

如何使用git-filter-repo将一个repo作为子目录合并到另一个目录中。
EN

Stack Overflow用户
提问于 2020-04-25 03:37:50
回答 2查看 9K关注 0票数 12

在尝试使用git filter-branch合并repos时,使用此要旨。只添加相关的代码段:

代码语言:javascript
复制
git filter-branch -f --prune-empty --tree-filter '
        mkdir -p "${REPO_NAME}_tmp"
        git ls-tree --name-only $GIT_COMMIT | xargs -I{} mv {} "${REPO_NAME}_tmp"
        mv "${REPO_NAME}_tmp" "$REPO_NAME"
    '

我收到了git的警告,声明如下:

代码语言:javascript
复制
WARNING: git-filter-branch has a glut of gotchas generating mangled history
     rewrites.  Hit Ctrl-C before proceeding to abort, then use an
     alternative filtering tool such as 'git filter-repo'
     (https://github.com/newren/git-filter-repo/) instead.  See the
     filter-branch manual page for more details; to squelch this warning,
     set FILTER_BRANCH_SQUELCH_WARNING=1.

因此,我看了一下git filter-repo描述声明如下:

重组文件布局(例如将所有文件移动到子目录以准备与另一个repo合并,.

这表明这个问题可以用git filter-repo解决,但是即使在检查了文档和给定的示例之后,我仍然找不到实现这一目标的方法。有人能帮我做同样的事吗。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-27 02:52:56

替换脚本中的filter-branch命令

代码语言:javascript
复制
git filter-branch -f --prune-empty --tree-filter '
        mkdir -p "${REPO_NAME}_tmp"
        git ls-tree --name-only $GIT_COMMIT | xargs -I{} mv {} "${REPO_NAME}_tmp"
        mv "${REPO_NAME}_tmp" "$REPO_NAME"
    '

有了这个

代码语言:javascript
复制
git filter-repo --to-subdirectory-filter "$REPO_NAME"

参见路径快捷方式这里

-对子目录-筛选器<directory> 将项目根视为处于<directory>之下 相当于使用--path-rename :<directory>/

票数 7
EN

Stack Overflow用户

发布于 2020-04-25 05:35:32

这看起来像路径重命名,作为基于路径的滤波器的一部分。

代码语言:javascript
复制
cd  $REPO_DIR_TMP
git filter-repo  --path-rename /:${REPO_NAME}_tmp/

在子文件夹中重写第二次回购的历史记录(在第二次回购中)

然后,您可以添加它作为第一个回购的远程,获取和合并,如您的gitst。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61420660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档