2016-11-16 190 views
1

如何移动存储库(old_rep)到另一个仓库(new_rep)作为目录没有松动的历史和文件库?git的移动仓库到另一个仓库作为目录

以下是我从其他栈的问题试过。我有new_repo中的文件,例如具有历史记录的目录,.txt,.sql文件。当我运行下面的代码时,看起来像--mirror正在取代从old_rep到new_rep的所有内容。

mkdir foo 
cd foo 

git clone --bare ssh://[email protected]/test/old_rep.git 

cd old_rep.git 
git clone --bare ssh://[email protected]/test/new_rep.git 

cd .. 
rm -rf old_rep.git 
+0

如果进入old_rep.git,请执行一些操作,cd ..和rm -Rf old_rep.git,您是不是只是删除了所有内容? – VonC

回答

2

假设你想要的所有内容从old_repo进入目录的new_repodir1

  1. old_repo创建dir1,从工作目录下的所有文件和目录移动到dir1,并承诺。

    这是所有与old_repo。下面的其他步骤发生在new_repo

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

  3. 确保不会有未提交的更改。如果有,然后将它们提交到分支或存储它们。
  4. 运行git fetch old_repo摆脱旧的回购协议提交到新的回购协议。假设您已经检出了要从old_repo导入代码的分支,请运行git merge old_repo/master。将master替换为您要导入的实际分支old_repo
  5. 检查一切看起来不错new_repo,你有所有的文件从old_repo及其历史。
  6. 清理。只有在您仔细检查第5步之后,运行git remote remove old_repo以取消回购链接,然后,如果您确定不需要old_repo中的任何内容,则可以删除old_repo所在的目录。我会在一段时间(1-2周)后进行移除,以确保我不会失去任何东西。
  7. 就是这样。
+1

请注意,对于某些Git版本,合并将需要'--allow-unrelated-historories'标志 – whitfin

相关问题