将具有完整历史记录的 Git repo A 移动到 Git repo B(非空)

Sas*_*i M 5 git macos version-control

我想将所有文件从 Git Repo A 移动到具有完整历史记录的 Git Repo B。Git B 已经包含另一个项目文件。我尝试了几种方法,例如

如何将文件从一个 git repo 移动到另一个(不是克隆),保留历史记录

如何使用`git format-patch`和`git am`将文件从一个git repo移动到另一个保留历史记录

我尝试通过终端执行所有提交。但是我"git filter-branch fatal:myDirectory/: 'myDirectory' is outside repository Could not get the commits"在执行git filter-branch --subdirectory-filter muDirectory -- --all.

我需要分步过程的详细指导,将所有文件从一个 repo 移动到另一个 repo。将不胜感激任何帮助,提前致谢。

Saj*_*han 5

  • 进入repoB并添加一个新的遥控器repoA URL(例如,repoA)。
  • 使用签出新分支(例如,branchArepoA/master history
  • Git 将所有文件夹/文件移动到一个新的子目录中RepoA。命令git mv <src> <dest>
  • 提交您的更改branchA
  • 签出master分支和合并branchA分支。

请遵循以下命令:

# go into repoB master branch
$ git remote add repoA <repoA-url>
$ git remote -v                     # confirm repoA is added named 'repoA'

$ git fetch repoA
$ git checkout -b branchA repoA/master
$ git mv <folder/file> repoA/<folder/file>     # repeat untill all files/folders are moved
$ git commit -am 'Moved repoA folder/file into repoA dir' 


$ git checkout master
$ git merge branchA

$ git add .
$ git commit -m 'Added repoA into repoA directory'
$ git push origin master
Run Code Online (Sandbox Code Playgroud)

Git 子树:您也可以使用git 子树来执行此操作:

$ git subtree add --prefix=repoA/ <repoA-url> master
Run Code Online (Sandbox Code Playgroud)

master branch of repoA入名为 的子目录repoA