我有一个回购。我需要将一些文件和目录移动到另一个仓库。
我设法使用git filter-branch --subdirectory-filter config/deploy -- --all
提取目录。
我还需要移动文件config/deploy.rb
。
怎么做?
答案 0 :(得分:1)
复制补丁。
正如Tim所暗示的那样,git历史在技术上不能从一个回购转移到另一个回购。但是,由于您无论如何都在重写历史记录,因此您显然希望将文件的历史记录复制到新的仓库中。
我有一些脚本可以执行此操作并且可以正常使用以下警告:
为简洁起见,我只列出了剧本的内容:
# git-cp-history
OTHER_REPO_DIR="$1"
FILES="$@"
git-export-history "$FILES" | git-import-history "$OTHER_REPO_DIR"
# git-export-history
FIRST_COMMIT=`git log --format=%H --reverse -- "${FILES[@]}" | head -n1`
git format-patch --stdout "$FIRST_COMMIT"^..HEAD -- "${FILES[@]}"
# git-import-history
cd "$1"
git am
由于脚本被命名为“git- *”并且在我的PATH中,我使用它们是这样的:
git cp-history ../other-repo local/repo/file.txt
答案 1 :(得分:0)
git filter-branch
完成后,分支仅包含已过滤的历史记录。您现在可以将分支推送到不同的存储库:
git init --bare ../elsewhere
git push ../elsewhere master branch1 branch2 branch3
现在您有一个裸存储库,其中包含已过滤的历史记录,您可以从中存储克隆新存储库。
如果您在过滤的历史记录中缺少一个文件,则必须重复过滤,以便不排除过滤。