在git上贡献项目的时候,一般步骤是,clone源项目到本地,切出一个新的分支,然后在新分支上开发,最后push到远程,然后提出mr。但是对于一些非开源的项目,可能会出现:
这就是说明没有权限在仓库下直接创建一个新分支,因为你并不是这个项目的所有者,下面介绍一个解决办法:
1.fork仓库到本地
将源仓库fork到本地(在源项目首页可以看到fork标识,点击即可)
然后查看 自己拥有的项目,就可以看到刚才fork的项目啦:
点击进入,查看clone的ssh/https
复制之后克隆到本地,然后切出一个新的分支,进行开发,开发好即可成功push到远程仓库,但是在我们push前一般都要merge一下master分支,但是注意一点,现在的master版本并不是源仓库的最新版本,而是fork时的版本,这个时候就需要更新一下最新的代码到本地,然后在进行merge,步骤如下小节。
2.更新代码
将原始存储库添加为远程存储库,并将其拉取到本地副本中。
git remote add upstream https://github.com/original-owner/original-repository.git
在此命令中,将original-owner替换为原始存储库的所有者的GitHub用户名,将original-repository替换为原始存储库的名称。
然后,可以使用以下命令将原始存储库的更改拉取到本地副本中:
git fetch upstream
此命令将从原始存储库中拉取最新的更改,但不会将它们合并到本地副本中。如果想将原始存储库的更改合并到本地副本中,可以运行以下命令:
git merge upstream/master
此命令将拉取的更改合并到本地master分支中。
3.合并代码
经过上述步骤之后 master已经是最新的了,这个时候在切到自己的分支进行merge,然后push到远程即可。
然后创建一个mr,你就可以发现,现在已经可以将自己的新开发分支,合并到没有权限的远程仓库分支啦。