将github上的git repo复制/分叉到同一个组织中

时间:2014-03-31 16:55:22

标签: git github git-fork

我在github上有一个repo,它包含一个部署到两个不同域的Web应用程序。该应用程序在这里和那里有轻微的逻辑分支,取决于它部署到哪个域。

我想把它分成两个单独的回购,每个域一个。

Github不会让我把它分成同一个组织。正在搜索" git duplicate repo"建议我应该克隆并镜像推送它,但这似乎是为了保持两个回购同步,我不想做。

最好的方法是什么?如果可能的话,我想在新副本中保留旧的提交历史记录。

7 个答案:

答案 0 :(得分:87)

只需创建一个新的存储库并从工作副本中推送到它:

git clone git@github.com:me/myrepo-original
cd myrepo-original
git remote set-url origin git@github.com:me/myrepo-new
git push origin master

现在您有了一个新的存储库myrepo-new,它与myrepo-original相同。

答案 1 :(得分:8)

如果您不需要fork关系(例如,您出于某种原因需要某种解耦的备用仓库),请将您的仓库重新复制为轮廓,并通过Google发现和larsks的答案。

如果你想要成为一个分支,请联系Github支持(support@github.com或https://github.com/support),他们将在同一个组织中为你创建一个分支。 (他们也不会挑剔这个,你只需要为回购提供替代名称,因为帐户中的回购名称必须是唯一的。)


更新:用户Steve Rice在下面的评论中报告GitHub支持声明支持目前/不再设置您帐户中的第二个分支。您仍然可以尝试询问他们,因为支持员工可能会这样做 - 但这可能也是一项政策变化,阻止他们这样做。

答案 2 :(得分:5)

+ menu on top of the page

上使用Github的导入存储库选项

这将创建一个新的存储库,其中包含复制的存储库的确切内容。缺点是它不算作Github的分支。

答案 3 :(得分:4)

另一种方法是将要复制的原始仓库添加为我们当前仓库的远程仓库。

#create a new repo in the org1 organization called myrepo-new

在本地终端中,运行:

git clone git@github.com:org1/myrepo-new
cd myrepo-new
git remote -v #shows current repo link on github as origin
git remote add name-for-remote https://github.com/org1/repo-old
git remote -v #shows repo-old as name-for-remote
git fetch  name-for-remote
git merge name-for-remote/branch-to-get-from-remote
#Now fix any conflicts if present
#If number of files/commits is very high, the desktop client may hang when you try to commit your changes after merge. Try switching to Git Shell if this happens.
git status 
git commit -m "commit message"
git push origin master

答案 4 :(得分:0)

替代解决方案:

创建一个新组织并将其分支。 如果仓库是私人的,那么它将在新组织中也保持私人状态。 然后,您可以访问外部开发人员或任何想要分叉存储库的人,他们可以将PR恢复到原始存储库。

答案 5 :(得分:0)

我知道这是一个非常古老的线程,但我偶然发现了它以寻找答案并随后找到了更好的方法:

制作你想要复制模板仓库的仓库。它是存储库设置顶部的一个复选框。执行此操作后,在代码按钮旁边的存储库顶部将有一个标有“使用此模板”的绿色大按钮。单击它,它将在您想要的任何帐户中复制该存储库。

答案 6 :(得分:-2)

你不能只复制本地文件夹,删除git stuff:

rm -rf .git*

然后在该文件夹中创建一个新的存储库?似乎更清洁,更容易。