如何优雅的在GitHub贡献代码

简介: 如何优雅的在GitHub贡献代码

基于GitHub仓库进行代码贡献操作步骤。


Fork代码

访问原始仓库,点击fork,将原始仓库代码fork到自己的GitHub账号下,成为副本仓库。


Clone副本仓库到本地

把fork后的副本仓库 clone 到本地。


git clone git@github.com:secbr/nacos.git

1

这里fork的原创仓库、副本仓库,均为nacos的develop(开发)分支。


创建本地分支

进入仓库目录,使用如下命令创建并切换到dev分支(自己的本地分支)。


git checkout -b dev # 创建并切换到dev分支

1

本地仓库提交

基于本地分支dev进行代码修改,然后进行本地提交。


相关命令:


git add . # 添加修改文件

git commit -m 'remove the if statement' # 提交 commit

1

2

先别着急push,还有问题需要解决。


跟踪原始仓库(upstream)合并

副本仓库的修改不会影响到原始仓库。同样,原始仓库的更新也不会反映到副本仓库。


origin是用来向副本仓库提交更新的远程仓库;upstream,也被称为上游,是专门用来同步原始仓库更新的远程仓库。


查看仓库关联情况命令:


(base) appledeMacBook-Pro-2:nacos apple$ git remote -vv

origin  git@github.com:secbr/nacos.git (fetch)

origin  git@github.com:secbr/nacos.git (push)

1

2

3

在本地仓库添加upstream:


git remote add upstream git@github.com:alibaba/nacos.git

1

再次查看关联情况:


(base) appledeMacBook-Pro-2:nacos apple$ git remote -vv

origin  git@github.com:secbr/nacos.git (fetch)

origin  git@github.com:secbr/nacos.git (push)

upstream        git@github.com:alibaba/nacos.git (fetch)

upstream        git@github.com:alibaba/nacos.git (push)

1

2

3

4

5

关联成功,既有orgin,又有upstream。


如果上游(upstream)更新了很多提交,则可有两种方式拉取并合并上游的更新。


方式一

git checkout develop # 切换到默认存在的develop分支,其他项目可能是master(下同)

git pull --rebase upstream develop:develop # 使用rebase模式拉取upstream/develop上的更新

# 且与本地的develop合并。第一个develop是远程分支,第二个是本地分支。

git checkout dev # 切换到前面建立的dev分支

git rebase develop # 使用rebase模式合并本地的dev和develop分支

1

2

3

4

5

方式二

git checkout develop # 切换到develop分支

git fetch upstream develop # 获取upstream上的develop分支

git checkout dev

git rebase upstream/develop # 使用rebase模式合并本地的dev和upstream/develop分支

1

2

3

4

这里采用第二种方式进行验证。


总的来说,可以把本地的develop(master)分支当作一个只负责从上游获取更新的分支,所有本地的改动都不会直接在develop上面进行。


而是先将上游的develop和本地的develop合并,此时,本地的develop是上游的最新版本;


再通过合并dev和本地的develop来完成本地改动的更新。整个过程在未开始合并之前,你的代码更新应该只会出现在dev分支上。


注意:在使用 git rebase 相关的命令时,需要谨慎应用在已经提交的更新或远程仓库上。


推送(push)到副本仓库

现在,已经完成代码的修改、上游的同步更新并且完成了合并。接下来应该将代码 push 到副本仓库。


git push origin dev # 将本地dev分支的代码push到origin的dev分支

# 如果该分支不存在则会创建

1

2

这个 push 只会更新副本仓库,并不会影响到原始仓库。要将代码贡献到原始仓库,还要发起 Pull Request。


发起合并请求(Pull Request)

直接在GitHub网页上发起对应的pull request请求。


新一轮功能修改

上述功能修改完毕,则可删除副本仓库中的dev分支。


新功能的修改,继续重复上面的创建本地分支、修改代码、执行add和commit操作、更新合并upstream(可放在创建分支之前和代码修改过程中的提交变动)、将本地新建分支推送至副本仓库、基于部分仓库创建Pull Request。



目录
相关文章
|
3月前
|
开发工具 数据安全/隐私保护 git
如何提交代码到github
如何提交代码到github
|
2月前
|
人工智能 运维 Linux
一文了解IntelliJ IDEA如何使用git上传代码到GitHub(附常见问题解决方案)
一文了解IntelliJ IDEA如何使用git上传代码到GitHub(附常见问题解决方案)
92 0
|
8月前
|
存储 运维 安全
【运维知识高级篇】一篇文章带你搞懂GitHub基础操作!(注册用户+配置ssh-key+创建项目+创建存储库+拉取代码到本地+推送新代码到Github)
【运维知识高级篇】一篇文章带你搞懂GitHub基础操作!(注册用户+配置ssh-key+创建项目+创建存储库+拉取代码到本地+推送新代码到Github)
140 0
|
3天前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
10 0
|
4月前
|
开发工具 git Windows
Git | 向GitHub提交代码超时处理
向GitHub提交代码超时处理
113 0
|
8月前
|
开发工具 git
搭建多个远程仓库,将代码同时提交Github、Gitee
搭建多个远程仓库,将代码同时提交Github、Gitee
|
3月前
|
语音技术
如何在GitHub正确提PR(Pull Requests),给喜欢的开源项目贡献代码
最好的中文TTS项目Bert-vits2更新了中文特化分支,但可能由于时间仓促,代码中存在不少的bug,作为普通用户,有的时候也想为自己喜欢的开源项目做一点点贡献,帮助作者修改一些简单的bug,那么该如何开始? 本次我们以Bert-vits2项目为例子,分享正确提交PR(Pull Requests)的方式。
|
4月前
|
编译器 定位技术 开发工具
分布式版本控制系统Git的下载、安装与使用其复制GitHub项目代码的方法
分布式版本控制系统Git的下载、安装与使用其复制GitHub项目代码的方法
|
4月前
|
数据可视化 开发工具 git
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
50 0
|
4月前
|
存储 搜索推荐 Java
开发者热议GitHub代码搜索政策,最佳搜索解决方案探索
近日,名为koepnick 的开发者因在一台老式电脑上使用GitHub 搜索自己的存储库代码,却没有手机等设备协助验证,导致无法登录GitHub 账户,发文怒斥GitHub:如若没有登录,就无法使用搜索代码服务,与其这样不如弃用。 其实,早在今年6月,GitHub 官方便发布了一封《代码搜索现在需要登录》的公告内容,官宣除了在 GitHub.com 上全局搜索代码已经需要用户登录的政策之后,自 6 月 7 日起,这一政策将其扩展为包括存储库范围的搜索。即要访问 GitHub 的新代码搜索和代码导航的全部功能,需要创建账户或登录 GitHub.com。