分叉自由和开放源码软件项目';s Git存储库
我开始认真地思考,我需要一个开源项目来满足我自己的需要。我已经给原作者发了补丁,但是回复非常简洁,而且,嗯,不受欢迎 无论如何。我读过这个问题,但这并没有回答我更具体的问题: 我该怎么处理这些文件 首先,我应该继续使用最初的Git存储库,还是扔掉所有的历史记录,重新开始(“分叉自由和开放源码软件项目';s Git存储库,git,open-source,fork,Git,Open Source,Fork,我开始认真地思考,我需要一个开源项目来满足我自己的需要。我已经给原作者发了补丁,但是回复非常简洁,而且,嗯,不受欢迎 无论如何。我读过这个问题,但这并没有回答我更具体的问题: 我该怎么处理这些文件 首先,我应该继续使用最初的Git存储库,还是扔掉所有的历史记录,重新开始(“rm-rf.Git&&Git init”)?第二,对于旧的自述、以前的版本信息和版本控制有什么意见吗 当然,许可和归属将根据许可的要求进行处理。如果您打算进行完全重写,请使用新初始化的git。除此之外,只需进行克隆。历史记录是
rm-rf.Git&&Git init
”)?第二,对于旧的自述、以前的版本信息和版本控制有什么意见吗
当然,许可和归属将根据许可的要求进行处理。如果您打算进行完全重写,请使用新初始化的git。除此之外,只需进行克隆。历史记录是源代码管理最有价值的部分。我要说的是,保持历史记录,并标记出你自己发展的起点
应该是无痛的,这是正确的方法,除非你从头开始重写所有内容。我保留历史的原因:
git bisect
——您可能会发现一个您认为无害的更改实际上是至关重要的。这是一种使用对分法很容易找到的东西,没有对分法就很难找到。没有历史,你无法做到这一点如果这些都不适用,你可能想重新开始。但即使你这样做了,也要将历史记录保存在私人副本中。如果您需要它,您可以从新存储库中移植您的更改,并执行上述所有操作。如果您实际上是在分叉(从原始项目停止的地方开始),请一定要克隆原始存储库并继续提交。这不仅允许您合并来自原始存储库的更改,还允许原始项目的开发人员合并来自您的fork的更改。如果两个项目都依赖于这种协作,那么协作将更加容易(拉请求)
这实际上应该是很自然的,因为您应该在存储库中进行更改,并发送补丁或请求。分叉是一样的,只是它被标记为一个单独的项目。正如其他人所指出的:你应该真正保留历史。关于自述和版本控制:您应该重命名您的项目,以避免与原始项目混淆。您可以使用一个暗指原始项目的名称(但要注意潜在的商标问题),但不要无礼。例如,如果将原始项目命名为“foo”,则将您的项目命名为“foo ng”(下一代),这会以某种方式表明您的项目比另一个项目“更好”。即使你觉得是这样,也不要那样做
应根据您的需要更新自述。也就是说,它应该记录新的项目名称、它是项目“foo”的分支的事实,以及它分支的可能点。就个人而言,我也会保留变更日志和类似的、技术性更强的文档,并在必要时附加到文档中,但会开始更新任何“新闻”样式的文档,即面向最终用户的文档。即使您从未计划将补丁发送回原始作者,
git
也是一个很棒的本地版本控制工具
关于github的另一件很酷的事情,作为之前发布的一些其他工作流的补充:
git checkout-b my_branch_name
)并在那里工作。*一旦分支处于所需状态,您可以切换回原始分支(
git checkout master
),并将更改合并回(git merge my_branch_name
)。*然后您可以将其推回github(
git push origin master
),或者
*为原作者制作一个补丁(使用一些版本的
git格式补丁
)。如果你不保留历史记录,它就不是叉子。@Ali a:我不会这么说。如果有人检查了当前状态并继续使用它,我仍然会称之为fork。叉子