git将存储库作为目录移动到另一个存储库

时间:2016-11-16 19:32:22

标签: git github

如何将存储库(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

2 个答案:

答案 0 :(得分:3)

假设您要将old_repo中的所有内容移至dir1的{​​{1}}目录中:

  1. new_repo create old_repo中,将所有文件和目录从工作目录移至dir1并提交。

    这都是dir1。以下其他步骤发生在old_repo

  2. new_repo中使用new_repo将旧回购添加为新回购的远程。将git remote add old_repo <path-to-old-repo>替换为旧存储库的实际路径(完整或相对)。我假设您在本地计算机上有两个存储库。

  3. 确保没有未提交的更改。如果有,则将它们提交给分支或存储它们。
  4. 运行<path-to-old-repo>以获取旧回购提交到新回购的提交。假设您已经检查了要从git fetch old_repo导入代码的分支,请运行old_repo。将git merge old_repo/master替换为您要导入的master的实际分支。
  5. 检查old_repo中的所有内容是否正常,并且您拥有new_repo中的所有文件及其历史记录。
  6. 清理。只有在您仔细检查了第5步后,运行old_repo取消链接回购,然后,如果您确定不需要git remote remove old_repo中的任何内容,则可以删除old_repo所在的目录位于。我会在一段时间(1-2周)后去除,只是为了确保我不会丢失任何东西。
  7. 就是这样。

答案 1 :(得分:0)

这是我发现要简单得多的事情。下面的答案假设像我一样,你不像以前那样关心这个旧的 repo,因为它是旧的,或者新的 repo 只是旧 repo 的存储。这就是为什么我不介意这样做。

  1. 克隆旧的存储库以转移到您的本地机器
  2. 从本地机器创建新的目标存储库或从现有存储库创建 git clone
  3. 将旧存储库中的所有文件夹和文件复制并粘贴到您机器上的目标存储库文件夹中
  4. git add . 然后 git commit 然后 git push
  5. 删除旧仓库