分叉自由和开放源码软件项目';s Git存储库

分叉自由和开放源码软件项目';s Git存储库,git,open-source,fork,Git,Open Source,Fork,我开始认真地思考,我需要一个开源项目来满足我自己的需要。我已经给原作者发了补丁,但是回复非常简洁,而且,嗯,不受欢迎 无论如何。我读过这个问题,但这并没有回答我更具体的问题: 我该怎么处理这些文件 首先,我应该继续使用最初的Git存储库,还是扔掉所有的历史记录,重新开始(“rm-rf.Git&&Git init”)?第二,对于旧的自述、以前的版本信息和版本控制有什么意见吗 当然,许可和归属将根据许可的要求进行处理。如果您打算进行完全重写,请使用新初始化的git。除此之外,只需进行克隆。历史记录是

我开始认真地思考,我需要一个开源项目来满足我自己的需要。我已经给原作者发了补丁,但是回复非常简洁,而且,嗯,不受欢迎

无论如何。我读过这个问题,但这并没有回答我更具体的问题:

我该怎么处理这些文件

首先,我应该继续使用最初的Git存储库,还是扔掉所有的历史记录,重新开始(“
rm-rf.Git&&Git init
”)?第二,对于旧的自述、以前的版本信息和版本控制有什么意见吗


当然,许可和归属将根据许可的要求进行处理。

如果您打算进行完全重写,请使用新初始化的git。除此之外,只需进行克隆。

历史记录是源代码管理最有价值的部分。我要说的是,保持历史记录,并标记出你自己发展的起点

  • 把它从Github上叉下来
  • 将其克隆到本地计算机
  • 应用您发送给原始作者但未被接受的修补程序

  • 应该是无痛的,这是正确的方法,除非你从头开始重写所有内容。

    我保留历史的原因:

  • 最重要的原因是:这允许您在原始代码中导入有用的更改。除非您预测您的项目将与原始项目彻底背离,以至于您永远不希望它们所做的任何事情出现在您的项目中,否则跟踪这些有用的更改并导入它们会变得更加容易
  • 如果你愿意的话,它会让你更容易回馈(比如说原始项目的所有者更愿意与你合作)
  • 如果你回顾某个特定的变化,挠头想知道它意味着什么,这会使你更容易追溯它的起源。在git的情况下,它可以帮助您查找bug,因为
    git bisect
    ——您可能会发现一个您认为无害的更改实际上是至关重要的。这是一种使用对分法很容易找到的东西,没有对分法就很难找到。没有历史,你无法做到这一点

  • 如果这些都不适用,你可能想重新开始。但即使你这样做了,也要将历史记录保存在私人副本中。如果您需要它,您可以从新存储库中移植您的更改,并执行上述所有操作。

    如果您实际上是在分叉(从原始项目停止的地方开始),请一定要克隆原始存储库并继续提交。这不仅允许您合并来自原始存储库的更改,还允许原始项目的开发人员合并来自您的fork的更改。如果两个项目都依赖于这种协作,那么协作将更加容易(拉请求)


    这实际上应该是很自然的,因为您应该在存储库中进行更改,并发送补丁或请求。分叉是一样的,只是它被标记为一个单独的项目。

    正如其他人所指出的:你应该真正保留历史。关于自述和版本控制:您应该重命名您的项目,以避免与原始项目混淆。您可以使用一个暗指原始项目的名称(但要注意潜在的商标问题),但不要无礼。例如,如果将原始项目命名为“foo”,则将您的项目命名为“foo ng”(下一代),这会以某种方式表明您的项目比另一个项目“更好”。即使你觉得是这样,也不要那样做


    应根据您的需要更新自述。也就是说,它应该记录新的项目名称、它是项目“foo”的分支的事实,以及它分支的可能点。就个人而言,我也会保留变更日志和类似的、技术性更强的文档,并在必要时附加到文档中,但会开始更新任何“新闻”样式的文档,即面向最终用户的文档。

    即使您从未计划将补丁发送回原始作者,
    git
    也是一个很棒的本地版本控制工具

    关于github的另一件很酷的事情,作为之前发布的一些其他工作流的补充:

  • 创建一个github帐户
  • 分叉您想要的存储库(通过转到github上的页面并单击分叉按钮)
  • 按照说明在本地执行新回购操作
  • 根据需要在当地开展工作;另外,请确保从github上的原始源获取更新(您可以在Fork队列中从github上的项目版本执行此操作)
  • (而不是向原始作者发送修补程序)请作者通过转到原始项目的Fork Queue页面获取您的修补程序-这样原始作者就可以轻松获取您的更改
  • 如果你从项目作者那里得到糟糕的回复,那么他们就不值得你的帮助,我想你也不应该太担心回馈。但是,仍然要遵循第4步中关于Fork队列的内容——您可以随时了解github上与您一起对项目进行更改的其他人的最新情况

    快速补充:如果你想让你的作品与原作者有一点不同,那么很容易: *创建一个新分支(
    git checkout-b my_branch_name
    )并在那里工作。
    *一旦分支处于所需状态,您可以切换回原始分支(
    git checkout master
    ),并将更改合并回(
    git merge my_branch_name
    )。
    *然后您可以将其推回github(
    git push origin master
    ),或者
    *为原作者制作一个补丁(使用一些版本的
    git格式补丁
    )。

    如果你不保留历史记录,它就不是叉子。@Ali a:我不会这么说。如果有人检查了当前状态并继续使用它,我仍然会称之为fork。叉子