我不时遇到这个问题。
假设我确实遵循以下步骤来阅读Rails的源代码,因为我遇到了一些问题。
git clone git://github.com/rails/rails.git
在研究过程中,我测试了一些东西,现在有一个修复程序,我想让Rails核心团队研究一下。如何将更改推送到分叉的Rails版本。
记住,当我克隆时,我没有克隆派生版本,而是克隆了只读版本。
不是我反对分叉。只是有时候我认为我只是要浏览,然后才想添加一些东西。
我不时遇到这个问题。
假设我确实遵循以下步骤来阅读Rails的源代码,因为我遇到了一些问题。
git clone git://github.com/rails/rails.git
在研究过程中,我测试了一些东西,现在有一个修复程序,我想让Rails核心团队研究一下。如何将更改推送到分叉的Rails版本。
记住,当我克隆时,我没有克隆派生版本,而是克隆了只读版本。
不是我反对分叉。只是有时候我认为我只是要浏览,然后才想添加一些东西。
Answers:
克隆存储库时,它将自动设置一个名为的远程目录origin
,它引用您已克隆的存储库。现在这指向上游的Rails项目,但是您需要创建自己的派生对象并推送到该分支,然后设置一个指向该分支的遥控器,以便您可以推送到该分支。
第一步是单击上游GitHub项目页面上的“ Fork”按钮(来自GitHub上有关分叉的说明的图片):
完成此操作后,找到并复制该仓库的URL。确保使用具有读写访问权限的SSH URL。它应该是这样的git@github.com:nadal/rails.git
,假设你的用户名nadal
。
现在,您可以创建远程服务器,这使Git可以跟踪远程存储库,从远程存储库中提取或推入远程存储库,具体取决于您具有的访问权限。您可以选择将其替换origin
为要推送的对象(设置了多少人),也可以origin
指向上游,而创建一个新的遥控器。我将展示如何进行第一次设置。第二个应该很容易弄清楚。
要更改origin
为指向GitHub上的fork,您可能需要将上游分支保留在某个地方,因此将其重命名为upstream
:
git remote rename origin upstream
现在创建一个新的远程指向您的fork:
git remote add -f origin git@github.com:nadal/rails.git
现在,您应该可以使用新的分叉了:
git push origin master
一旦对更改感到满意,就可以将其推送到GitHub,并希望Rails团队的人来看看它,您有两种选择。一种是使用GitHub发送拉取请求;请参阅那里的文档,了解如何执行此操作。但是,如果您只有一个或几个小补丁,Rails团队会希望您创建一个Lighthouse票证并附加补丁;有关更多信息,请参见有关对Rails进行贡献的说明。
编辑这是一个图表,指示正在发生的事情。您要做的只是克隆上游rails回购;所以现在你有自己的回购自己的机器,它是指在git://github.com/rails/rails.git
为origin
:
GitHub:git://github.com/rails/rails.git ^ | 遥控器:起源 | 您的机器:滑轨/
如果分叉然后克隆叉子,您将获得以下信息:
GitHub:git://github.com/rails/rails.git <-git@github.com:nadal / rails.git ^ | 遥控器:起源 | 您的机器:滑轨/
如果您按照我的指示进行操作,将获得以下信息:
GitHub:git://github.com/rails/rails.git <-git@github.com:nadal / rails.git ^^ | | 遥控器:上游来源 | | 您的机器:\ ------------------------------- rails /
就像您通过分叉得到的版本一样,除了它还具有一个upstream
遥控器,因此您可以跟踪正式的更改并将其合并到您的代码中(如果您创建了分叉的版本,则可能希望将upstream
遥控器添加为好)。
没关系。如果愿意,您可以添加另一个远程服务器,指定您的非分叉存储库。将您的更改推送到该位置。