如何将存储库 (old_rep) 作为目录移动到另一个存储库 (new_rep),而不丢失存储库的历史记录和文件?
这是我从其他堆栈问题中尝试过的内容。我在 new_repo 中有文件,例如具有历史记录的目录、.txt、.sql 文件。当我运行下面的代码时,看起来 --mirror 正在替换从 old_rep 到 new_rep 的所有内容。
mkdir foo
cd foo
git clone --bare ssh://git@test.test.test/test/old_rep.git
cd old_rep.git
git clone --bare ssh://git@test.test.test/test/new_rep.git
cd ..
rm -rf old_rep.git
Run Code Online (Sandbox Code Playgroud)
假设您要将所有内容从以下old_repo
目录移至:dir1
new_repo
在old_repo
create中dir1
,将所有文件和目录从工作目录移动到dir1
并提交。
这就是全部了old_repo
。下面的其他步骤发生在new_repo
.
用于new_repo
将git remote add old_repo <path-to-old-repo>
旧存储库添加为新存储库的远程。替换<path-to-old-repo>
为旧存储库的实际路径(完整或相对)。我假设您在本地计算机上有两个存储库。
确保没有未提交的更改。如果有,则将它们提交到分支上或将它们隐藏起来。
运行git fetch old_repo
以将旧存储库中的提交获取到新存储库中。假设您已经签出了要从中导入代码的分支old_repo
,请运行git merge old_repo/master
。替换为您要导入的master
实际分支。old_repo
检查一切是否正常,new_repo
并且您拥有所有文件old_repo
及其历史记录。
清理。只有在仔细检查步骤 5 后,运行git remote remove old_repo
以取消链接存储库,然后,如果您确定不需要 中的任何内容,则可以删除所在old_repo
目录。old_repo
我会在一段时间(1-2周)后进行删除,只是为了确保我不会丢失任何东西。
就这样。