Git将文件夹拆分为具有所有分支,标签和历史记录的新存储库。
source_repo
component1/{file1/sub-dir1}
component2/{file2/sub-dir2}
target_repo1 (target repo to be like this)
component1/{file1,sub-dir1}
target_repo2 (target repo to be like this)
component2/{file2,sub-dir2}
“ git add -A”的git文档说,它更新索引以匹配树。如果没有更改,为什么要更新索引以匹配工作树。 git add和git commit是否需要for循环?签出将远程跟踪分支拉到本地存储库。是否有合理的理由让git在for循环中添加并提交。在for循环中使用“ git add”有什么优点或缺点。
-A,--all,--no-ignore-removal 不仅在工作树具有文件匹配的位置,而且在索引已经具有条目的位置,都更新索引。 这将添加,修改和删除索引条目以匹配工作树。 如果在使用-A选项时未给出任何信息,则会更新整个工作树中的所有文件(Git的旧版本用于限制 更新到当前目录及其子目录。
我正在使用从答案https://stackoverflow.com/a/26033230/3437439复制的脚本
#!/bin/bash
repoDir=$1
folder=$2
newOrigin=$3
cd $repoDir
git checkout --detach
git branch | grep --invert-match "*" | xargs git branch -D
for remote in `git branch --remotes | grep --invert-match "\->"`
do
git checkout --track $remote
# git add -vA *
# git commit -vam "Changes from $remote" || true
done
git remote remove origin
git filter-branch --prune-empty --subdirectory-filter $folder -- --all
(script truncated)
在将文件夹从一个存储库拆分到另一个存储库的过程中,做什么和不做什么。请分享。