[尝试使用git filter-branch
合并使用此gist的存储库时。仅添加相关的代码段:
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
,description指出以下内容:
重组文件布局(例如将所有文件移动到子目录中,以准备与另一个存储库合并,...
这表明可以使用git filter-repo
解决此问题,但是即使在检查了文档并给出examples之后,我也找不到解决该问题的方法。有人可以帮我吗?
这看起来像是路径重命名,是path-based filters的一部分:
cd $REPO_DIR_TMP
git filter-repo --path-rename /:${REPO_NAME}_tmp
这将重写子文件夹中第二个仓库的历史记录(在第二个仓库内)
然后,您可以像在gitst中一样,将其添加为第一个回购,获取和合并的远程站点。