我有两个代码库,需要将其中一个完整地复制到另一个空的代码库中,而后者与第一个代码库的访问级别不同。副本和源代码库不应该保持链接。
我对git不太熟悉,如果有人可以帮我解决这个问题,那就太好了。
我有两个代码库,需要将其中一个完整地复制到另一个空的代码库中,而后者与第一个代码库的访问级别不同。副本和源代码库不应该保持链接。
我对git不太熟悉,如果有人可以帮我解决这个问题,那就太好了。
请参考https://help.github.com/articles/duplicating-a-repository
简短版:
为了创建一个完全相同的副本,您需要执行裸克隆(bare-clone)和镜像推送(mirror-push)两个步骤:
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仓库,不仅限于github
上述步骤创建了一个新的远程仓库副本。然后将其克隆到您的工作机器上。
Jeremy.git
克隆到另一个Jeremy.git
中一样。 - gran_profaci你也可以使用git-copy。
注意:你需要先安装Ruby。运行ruby -v
来检查是否已经安装了Ruby。如果没有:
Linux:运行sudo apt install ruby
,Windows:使用RubyInstaller,macOS:使用Homebrew
现在安装git-copy
gem install git-copy
那么你就可以使用它了
git copy https://github.com/exampleuser/old-repository.git https://github.com/exampleuser/new-repository.git
sudo apt install ruby
。 - harm如果你只是想使用现有的一个或多个文件创建一个新存储库(即作为一种模板),我发现最简单的方法是使用所需名称等创建一个新存储库,将其克隆到桌面,然后只需添加想要的文件和文件夹即可。
在这种情况下,您不会获得所有历史记录等,但您可能不需要它们。
我发现在Github上直接操作会更加容易。在创建一个新的空仓库(子仓库)之后,如果你想让它拥有和父仓库相同的代码,
点击顶部栏的 Code。在底部选择最后一个选项(...或从另一个存储库导入代码)。然后会提示你输入你想要导入代码的仓库的克隆链接。将父仓库的克隆链接粘贴进去并点击导入即可。
更简单和适合初学者的选择:如果您想避免使用命令行和终端来复制存储库,这是您需要做的:
我注意到其他答案中有些人使用裸克隆,然后镜像推送到新存储库,但这对我来说不起作用,当我打开新存储库后,文件看起来混乱,不符合我的预期。
以下是一种绝对有效的复制文件的解决方案,尽管它不能保留原始存储库的修订历史。
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
将其推送到新存储库。完整步骤:
mkdir my-repo
cd my-repo
git clone <repo> .
rm -rf .git
git add . ; git commit -am "Initial commit"
git remote add origin https://github.com/user/repo-name
git push origin master
使用github GUI的简单方法。 单击选择的存储库,然后在设置中勾选模板存储库。 当您导航回主要存储库时,您可以创建直接副本