将一个git存储库复制到具有历史记录的另一个存储库

时间:2020-06-11 03:38:41

标签: git azure-devops

如何将一个仓库完全复制到具有历史记录的另一个仓库中。

我不想使用fork或镜像选项,我尝试了分支过滤器选项,但它仅限于一个目录。 git filter-branch --subdirectory-filter /../ RepoA / dire1

我指的是以下网址 https://medium.com/@ayushya/move-directory-from-one-repository-to-another-preserving-git-history-d210fa049d4b/

Example:
Source      Target             Requirement
------      ----              -------------------
RepoA       RepoB(new Repo)   Copy entire history  
  - Dir1     - Dir1
  - Dir2     - Dir2

你能建议吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用--index-filter代替--subdirectory-filter

$ git filter-branch --index-filter \
    'git ls-files -s | sed "s#\t#&RepoA/#" |
     GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
     git update-index --index-info &&
     mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD

请结帐this thread以获得更多信息。

如果RepoB是新的新仓库。 Yon也可以尝试以下命令。将RepoA复制到本地计算机,删除RepoA的远程源,然后将远程URL添加到RepoB。参见以下示例:

git clone http:/url/repoA
cd repoA
git pull origin branchName
git remote remove origin
git remote add origin http:/url/repoB
git push -u origin --all

您也可以尝试使用git子模块。检查git document以获得更多信息。