当前位置:  开发笔记 > 运维 > 正文

如何将只读git克隆从github转换为分叉

如何解决《如何将只读git克隆从github转换为分叉》经验,为你挑选了1个好方法。

我不时会遇到这个问题.

假设我已经按照以下方式阅读了rails的源代码,因为我遇到了一些问题.

git clone git://github.com/rails/rails.git

在研究期间,我测试了一些东西,现在我有一个修复,我希望rails核心团队来看看.如何将我的更改推送到分叉版本的rails.

记得当我克隆时,我没有克隆分叉版本而是只读版本.

并不是说我反对分叉.只是有时我认为我只是要浏览然后我想添加一些东西.



1> Brian Campbe..:

克隆存储库时,它会自动设置一个名为的遥控器,该遥控器origin引用您克隆的存储库.现在指向上游的Rails项目,但你需要的是创建自己的fork,你可以推送到它,然后设置一个指向那里的遥控器,以便你可以推送它.

第一步是单击上游GitHub项目页面上的"Fork"按钮(图片来自GitHub关于分叉的说明):

GitHub fork按钮

完成后,找到并复制该repo的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做出贡献的说明.

编辑这是一个图表,表明发生了什么.你所做的只是克隆上游铁路仓库; 所以现在你在自己的机器上拥有自己的仓库,它指的git://github.com/rails/rails.gitorigin:

Github:    git://github.com/rails/rails.git
                    ^
                    |
Remotes:          origin
                    |
Your machine:     rails/

如果你分叉然后克隆你的叉子,这就是你得到的:

Github:    git://github.com/rails/rails.git <-- git@github.com:nadal/rails.git
                                                           ^
                                                           |
Remotes:                                                origin
                                                           |
Your machine:                                           rails/

如果你按照我的指示,这将是你将得到的:

Github:    git://github.com/rails/rails.git <-- git@github.com:nadal/rails.git
                        ^                                  ^
                        |                                  |
Remotes:            upstream                            origin
                        |                                  |
Your machine:           \-------------------------------rails/

这就像你通过分叉获得的版本一样,除了它还有一个upstream遥控器,所以你可以跟踪官方更改并将它们合并到你的代码中(如果你创建了分叉版本,你可能想要添加upstream遥控器好).


@Nadal我的回答并不是假设您已经创建了一个fork.我的回答解释了如何将您刚刚克隆回购的情况转换为可以将您的更改从本地回购推送到分支的情况.在GitHub上分配一个repo只是在你可以推送的服务器上复制一份; 一旦你完成了,我的指示就会告诉你如何指出你创建的本地仓库,现在指向官方的铁路仓库,而不是指向你的仓库.我添加了一个图表来表明发生了什么; 我希望有所帮助,如果您有任何其他问题,请告诉我.
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有