在尝试使用git filter-branch合并repos时,使用此要旨。只添加相关的代码段:
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的警告,声明如下:
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解决,但是即使在检查了文档和给定的示例之后,我仍然找不到实现这一目标的方法。有人能帮我做同样的事吗。
发布于 2020-04-27 02:52:56
替换脚本中的filter-branch命令
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 filter-repo --to-subdirectory-filter "$REPO_NAME"参见路径快捷方式节这里
-对子目录-筛选器
<directory>将项目根视为处于<directory>之下 相当于使用--path-rename :<directory>/
发布于 2020-04-25 05:35:32
这看起来像路径重命名,作为基于路径的滤波器的一部分。
cd $REPO_DIR_TMP
git filter-repo --path-rename /:${REPO_NAME}_tmp/在子文件夹中重写第二次回购的历史记录(在第二次回购中)
然后,您可以添加它作为第一个回购的远程,获取和合并,如您的gitst。
https://stackoverflow.com/questions/61420660
复制相似问题