什么是适当的礼节和推荐的GitHub工作流程,以同时促进上游回购和从上游回购回馈?


21

我是GitHub和VCS的新手。我多年来一直使用各种语言进行编程,但是我一直在自定义项目(未公开发布)中一直独自工作。我最近开始在我正在研究的项目中使用从GitHub下载的jQuery UI小部件。该存储库不再由原始作者维护。另一个fork已合并了一些原始的请求请求。这是我分叉的那个。

我发现了几个错误,并提出了相应的修复程序。我想提供这些修复程序,但是我还想作很多其他更改,供我们自己使用,这些更改将破坏某些现有功能。另外,我想从另一个分支中引入一个想法。

我仍在学习GIT和GitHub,并试图找出解决所有问题的最佳方法。我已经阅读了很多有关不同概念/任务的文章(在这里,SO,GitHub帮助页面,Pro Git):工作流,合并,拉取请求,挑选,重新设置,分支。我的灰质是游泳,所以我需要开始这样做,这样我才能更好地了解自己阅读的内容。

主要问题:

  1. 我想(在某处)我读到您一次只能在一个分支上有一个请求请求。那么这是否意味着我应该为每个错误提供一个单独的分支,然后为每个错误执行一个单独的提取请求?

  2. 我想清理空白问题,而且我似乎还记得读过,最好在单独的提交中执行此操作。我应该在我的主数据库还是在另一个分支中进行此操作?我不想对如此琐碎的事情进行拉取请求,但是如果我在分支之前进行空格更改,这会影响对错误修复的拉取请求吗?一些fork进行了空格清理,这实际上使diff变得毫无用处。

  3. 我当时想用叉子创建问题,以作为记录bug的一种方式,即使我已经针对它们进行了修复。这是一个好主意吗?如何将问题,提交和合并合并到主节点?如果我向上游发出拉取请求,我的问题也会出现在上游还是会丢失该文档链接?我无法针对上游仓库打开问题(没有问题标签)。

  4. 在我想使用他的想法时,最好的办法是赞扬另一个叉子作者?我无法完全使用他的代码,尤其是因为他的更改是针对较旧版本的上游应用的,并且与我的其他更改不兼容。但是我想用这个主意,我想在应得的信贷额上给予好评。我应该只在提交消息中链接到他的回购(或个人资料或特定提交)吗?

  5. 更改自述文件和主文件顶部的DocBlock的礼节是什么?可以进行更改,添加我的名字,添加指向我的repo和演示的链接,删除指向原始演示的链接(因为我的fork最终将与原始版本不兼容)吗?当然,我将保留原始作者姓名和许可证信息。作为记录,它已获得MIT许可。

作为从未使用过VCS的独立开发人员,我习惯于重写历史记录。我是一个完美主义者,喜欢事物要整洁。记录历史的想法使我有点紧张,我想第一次做对。我创建了一个新的供您玩耍/学习的仓库,但是我急于继续固定jQuery UI小部件,以便继续进行我的项目。

Answers:


15
  1. 正确:请求请求链接到存储库中的分支。如果您修改分支,那么您还将修改作为拉取请求提交的内容。

    因此,是的,您必须为每个错误修复程序创建一个分支(和拉取请求)。明智的选择是从一个开始,然后看看维护者如何对那一个作出反应,然后再进行其余的工作。开源是一个固有的社会过程。

  2. DO为您的空白改变拉请求!作为有时是维护者的人,我喜欢这些类型的请求:我批准或不批准,它们花费的时间很少。

    您可能还会遇到的问题是,维护者不同意您对空格的更改!所以,提防..

  3. 嗯..目前尚不清楚您要达到的目标。这听起来像是文档过多,但不是一个好主意-也许您可以澄清为什么要这样做?

  4. 在您的提交消息中(甚至在代码中的注释中)链接到他的回购是一种赞美的好方法。不过要小心-明确表示您要感谢他的想法,不是他的代码。如果您已经复制了代码,那么我将通过电子邮件将其发送给他,除非非常清楚,他在使用哪个许可证来编写代码。如果许可是明确的(并且与提交提交的存储库中的许可是不同的许可),则需要在拉取请求中添加其他许可,并在拉取请求消息中也要提及。

  5. 这是一个非常好的问题,并且取决于您与谁交谈。我的意见是,您永远不要在任何提交或代码中添加名称。主要原因是它暗示着“对代码的所有权和责任” –可能因为“这是您的”而使其他人无法修改代码。但是现在我们正在就开源本质进行广泛的讨论,所以我在这里停下来说-问项目维护者,或者干脆看看他的反应。

  6. 您可以使用GIT重写(您的本地尚未发布的)历史记录!了解git rebase命令-这是我喜欢git的主要原因之一。(强制)将重写的提交/历史推送到共享存储库(例如,github)是一个非常糟糕的主意。然后,这将与其他开发人员拥有的存储库发生冲突-在提取(重写的历史记录)更改时,他们将不得不做一些困难的事情。

[#6:谢谢@toxalot!]


对于#6,是的,您可以重写历史记录,但只能重写本地历史记录。一旦将其推送到公共仓库,重写历史记录是一个非常糟糕的主意。
toxalot
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.