我有两个存储库,我需要将整个存储库复制到另一个存储空间,它与第一个存储库具有不同的访问级别。副本和母库不应该链接在一起。
我是git的新手,如果有人可以帮我解决这个问题,那就太棒了。
答案 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)
我注意到这里的一些其他答案使用裸克隆然后镜像推送到新存储库,但是这对我不起作用,之后当我打开新存储库时,文件看起来很混乱,不像我预期的那样。
这是一个绝对适用于复制文件的解决方案,尽管它不会保留原始存储库的修订历史。
git clone
将存储库复制到您的本地计算机上。cd
进入项目目录,然后运行 rm -rf .git
以删除所有旧的 git 元数据,包括提交历史等。git init
初始化一个新的 git 存储库。git add . ; git commit -am "Initial commit"
- 当然,您可以随意调用此提交。git remote add origin https://github.com/user/repo-name
(将 url 替换为新存储库的 url)git push origin master
将其推送到您的新存储库。