创建 github 存储库的“副本”
Posted
技术标签:
【中文标题】创建 github 存储库的“副本”【英文标题】:Create "duplicate copy" of github repository 【发布时间】:2012-06-28 06:35:14 【问题描述】:我看到了类似问题的答案,我确信我可能对 Git 和 Github 术语不够熟悉,无法知道它们是否适用于我的问题。我需要做的是克隆一个现有的 Github 远程存储库(另一个人的用户名下的私有存储库,我有贡献者访问权限)并在我的帐户下创建一个新的私有远程存储库。现有的 repo 用户将对 repo 进行重大更改、删除和重新推送,然后他们希望我克隆并创建一个副本,以便我们可以在我的用户下继续从 repo 工作。如果可能的话,我想用 repo 保存提交历史。
我已在本地克隆,但似乎无法弄清楚如何将其推送到并非源自原始用户的新远程。
【问题讨论】:
【参考方案1】:使用GitHub界面时,最简单的方法是fork a repo。
或者,如以下 GitHub 上的 Duplicating a repository 文章中所建议的,您可以通过以下 shell 命令实现 repo 复制:
创建存储库的裸克隆:
git clone --bare https://github.com/exampleuser/old-repository.git
镜像推送到新仓库:
cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
删除您在第 1 步中创建的临时本地存储库:
cd ..
rm -rf old-repository.git
【讨论】:
【参考方案2】:我们必须了解更多细节,但很有可能您尝试做的事情是不必要的。
很可能所有者可以通过创建一个分支并使该分支看起来像他们想要的那样来实现他们的目标,如果这是所需的最终目标,可以用它替换 master。他们可以在不破坏所有现有历史的情况下做到这一点。
或者,您可以分叉存储库。但是,请记住,如果他们要完全改写历史,那么如果这是一个目标,那么整合你在分叉上所做的工作可能会变得很困难。
您还可以通过删除当前远程git remote rm origin
并创建一个指向您帐户下创建的存储库的新副本来推送您克隆的副本。不过,在这里,如果原始存储库完全更改,则很难集成在您的“副本”上完成的任何工作。
【讨论】:
我可能会误解——但我认为如果他们删除或无法识别地更改上游,我的分叉/克隆也会受到影响?听起来那个假设是不正确的。 它们只有在您随后从它们中提取或获取时才会受到影响。 谢谢,这真的很有帮助,我几乎只是从根本上对 Git 的工作原理感到困惑。【参考方案3】:您是否无法通过forking github 上的存储库完成您想要做的事情,然后克隆并处理它?
这还保留了两个存储库之间的关系,并允许您在以后选择将它们的更改合并到您的存储库中,反之亦然。
【讨论】:
谢谢它确实这样工作,我完全误解了与上游副本的关系。以上是关于创建 github 存储库的“副本”的主要内容,如果未能解决你的问题,请参考以下文章
在 GitHub 上创建一个存储库的子目录并将其作为我自己的存储库的一部分