GitHub:将fork作为“自己的项目”


118

我找到了一个很好的GitHub项目,我对此进行了很多扩展。我相信我的更改是好的,因为它们正在起作用。但是似乎原始作者没有时间审查这些更改并将其包括在内。实际上,我需要和实现的功能甚至有可能不在原作者的视野内,而我们只是针对不同的目标。我不知道,因为我从未收到他的回应。

就是说,我看到我的贡献没有计入我的提交映射中。只要原始存储库不接受我的贡献,情况就是如此。此外,我的作品仅被认为是作品,并没有吸引任何其他拥有与我相同视野的人。对我来说,这是一个更大的问题,因为我看到很多人都在要求这些功能。

我仍在为原始项目提供文稿,但我认为它们不太可能被接受。现在,我想使我的叉子成为一个“真实的项目”。当我计划在某个时间与原始项目同步时,我想重命名它,并激发人们也为我的项目做出贡献。此外,如果GitHub能够表明该项目正在积极维护(就提交映射而言),我将非常感激。最后,我想对它进行适当的发布。

我怎样才能很好地完成这项工作,使我的叉子成为一个成熟的项目?


我很困惑,也许自2014年以来情况已经发生了变化,但是我的TightBlog项目在左上角被列为Apache Roller的分支:github.com/gmazza/tightblog,但是我为我所有的问题全力以赴,公关等,即使没有工作应用于Apache Roller主项目,而仅应用于我的叉子:(github.com/gmazza?tab=overview&period=monthly)。我不确定将叉子做成一个独立的项目会带来什么好处。
Glen Mazza

Answers:



41

为此,您需要复制存储库。简短的版本是:

  1. 在GitHub上创建一个新的存储库。
  2. 克隆您要与其父分离的分支存储库。
  3. 将此克隆中的所有分支推送到您的新存储库。

如果您希望存储库仍然使用相同的名称,则可以克隆您的存储库,在GitHub上将其删除,使用相同的名称创建一个新项目,然后推送所有内容。
罗里·奥肯

12
似乎GitHub拉取请求只能跨项目的GitHub分支。因此,如果复制存储库,则无法从新存储库发出拉取请求。而且,如果您删除并替换旧的存储库,则所有现有的拉取请求都可能会关闭,因为GitHub会认为代码已被删除,并且您将无法发出新的拉取请求。
罗里·奥肯

9
拒绝投票可能会误导人们采取不必要的行动。相反,应该接受Oleh的答案:方法是联系GitHub支持。花了不到一个小时的时间将我的fork转换成一个独立的仓库。
Georgii Ivankin '17年

5

这非常简单:

  1. 在某个地方克隆仓库:git clone git@github.com:USERNAME/REPOSITORY.git确保已克隆)
  2. 删除回购在GitHub的(设置>选项>删除此库)
  3. 创造在GitHub中一个新的空白仓库
  4. git remote set-url origin git@github.com:USERNAME/NEW_REPOSITORY.git(如果您为仓库使用了相同的名称,则NEW_REPOSITORY== REPOSITORY👍🏻)
  5. git push
  6. 🙌🏻

(我使用ssh,但如果您使用https,则github网址将如下所示https://github.com/USERNAME/REPOSITORY.git


1

首先,您应该检查许可证是否允许您这样做,通常来说,开源会强迫您这样做,因为这完全与软件开发无关。如果是这样,那么只需创建一个新的仓库即可。不要忘记相信原始作者并开始您的项目。


3
它是MIT许可的,是的,我计划照常提供学分。实际上,如果原作者只是接受我的代码(或告诉我为什么他不这样做),我会更愿意
Christian

1
如果许可证不允许您创建不是原始GitHub分支的存储库,则该项目首先不应是公共GitHub项目,因为公共项目应在开源许可证下发布。 。我想不出任何禁止复制代码的开源许可证。这就是开源的全部重点。(当然,可能会有归因要求,但如果项目不是“正确的” GitHub分支,则可以满足这些要求。)
cdhowie

作者当然应该使他们的项目免费软件,但是如果没有(例如,如果没有许可证),则该项目是非免费的:stackoverflow.com/a/16934573/6791398
gmarmstrong,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.