如何复制完全独立于原始存储库的存储库,而不是fork?

时间:2014-04-30 16:13:13

标签: git github

我有一个我们公司用于测试开发的共享存储库。由于它变得非常繁琐,我们决定将每个团队的测试重构为单独的repos,并将常见的测试块(TestNG,Selenium,BrowserMob等)分成一个共同的回购。

最初,我只是为我的团队分成了一个回购:originalRepo / testStuff ==> myteam / testStuff。然后我修剪了其他团队的所有测试代码,因为我不再需要维护它。为新工作创建一个分支,然后我创建了一个pull请求,将该分支合并到我的fork的master中: myteam / testStuff-new ==> myteam / testStuff。

但是,其他人都收到了拉取请求的通知,以为我要从originalRepo / testStuff中删除1500个左右的文件。在整个测试团队执行CPR后,我们确定我没有破坏任何东西。但是,目前的设置是接近原来的,我想彻底切断Git中的所有联系。

我看到的选项: 1.手动将其全部复制/粘贴到新的仓库(即myteam / severedRepo)。这似乎充满了错误。 2.保留我现有的fork并以某种方式将其从originalRepo / testStuff中切断。这似乎需要管理员的帮助。

还有其他方法吗?干净,可靠,推荐?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您具有创建新存储库的正确权限,这应该非常简单。您所要做的就是创建一个新的裸存储库并将现有存储库的内容推送到它。

  1. myteam/severedRepo创建新的回购。
  2. 在本地存储库中,删除对原始存储库git remote rm origin的引用。
  3. 添加指向新创建的回购git remote add origin https://github.com/myteam/severedRepo.git的新远程。当您创建一个新的空白存储库时,Github将显示添加新原点时应使用的URL。
  4. 将您的本地存储库推送到新的远程git push -u origin master
  5. 在创建新存储库后,Github显示的页面上将显示上述大部分信息。不过要带走的重要一点是,一个git存储库与另一个存储库之间唯一的实际连接是通过遥控器。如果删除遥控器,则它们之间不再有任何链接。从技术上讲,Github可以通过检查他们的提交历史来确定两个存储库之间的共享历史,但我不认为他们实际上是这样做的。