如何复制git存储库? (没有分叉)

时间:2011-07-07 15:35:26

标签: git github

我有两个存储库,我需要将整个存储库复制到另一个存储空间,它与第一个存储库具有不同的访问级别。副本和母库不应该链接在一起。

我是git的新手,如果有人可以帮我解决这个问题,那就太棒了。

6 个答案:

答案 0 :(得分:164)

请参阅https://help.github.com/articles/duplicating-a-repository

简短版本:

为了完全复制,你需要同时执行裸克隆和镜像推送:

mkdir foo; cd foo 
# move to a scratch dir

git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository

cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository

cd ..
rm -rf old-repository.git  
# Remove our temporary local repository

注意:以上内容适用于任何远程git repo,指令并非特定于github

上面创建了一个新的repo远程副本。然后将其克隆到您的工作机器上。

答案 1 :(得分:18)

您也可以使用git-copy

使用Gem安装它,

gem install git-copy

然后

git copy https://github.com/exampleuser/old-repository.git \
    https://github.com/exampleuser/new-repository.git

答案 2 :(得分:4)

如果您要复制到GitHub,可以使用GitHub Importer为您执行此操作。原始仓库甚至可以来自其他版本控制系统。

答案 3 :(得分:3)

如果您只是想使用现有文件中的全部或大部分文件创建一个新的存储库(例如,作为一种模板),我发现最简单的方法是创建一个具有所需名称等的新存储库,将其克隆到您的桌面,然后只需添加您想要的文件和文件夹。

你没有得到所有历史记录等,但在这种情况下你可能不希望这样。

答案 4 :(得分:0)

打开终端。

创建存储库的裸克隆。

  

git clone --bare https://github.com/exampleuser/old-repository.git

Mirror-push to the new repository.

cd old-repository.git

  

git push --mirror https://github.com/exampleuser/new-repository.git

答案 5 :(得分:0)

我注意到这里的一些其他答案使用裸克隆然后镜像推送到新存储库,但是这对我不起作用,之后当我打开新存储库时,文件看起来很混乱,不像我预期的那样。

这是一个绝对适用于复制文件的解决方案,尽管它不会保留原始存储库的修订历史。

  1. git clone 将存储库复制到您的本地计算机上。
  2. cd 进入项目目录,然后运行 ​​rm -rf .git 以删除所有旧的 git 元数据,包括提交历史等。
  3. 通过运行 git init 初始化一个新的 git 存储库。
  4. 运行 git add . ; git commit -am "Initial commit" - 当然,您可以随意调用此提交。
  5. 将源设置为您的新存储库 git remote add origin https://github.com/user/repo-name(将 url 替换为新存储库的 url)
  6. 使用 git push origin master 将其推送到您的新存储库。