如何优雅的在GitHub贡献代码
基于GitHub仓库进行代码贡献操作步骤。
Fork代码
访问原始仓库,点击fork,将原始仓库代码fork到自己的GitHub账号下,成为副本仓库。
Clone副本仓库到本地
把fork后的副本仓库 clone 到本地。
git clone git@github.com:secbr/nacos.git
这里fork的原创仓库、副本仓库,均为nacos的develop(开发)分支。
创建本地分支
进入仓库目录,使用如下命令创建并切换到dev分支(自己的本地分支)。
git checkout -b dev # 创建并切换到dev分支
本地仓库提交
基于本地分支dev进行代码修改,然后进行本地提交。
相关命令:
git add . # 添加修改文件
git commit -m 'remove the if statement' # 提交 commit
先别着急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)
在本地仓库添加upstream:
git remote add upstream git@github.com:alibaba/nacos.git
再次查看关联情况:
(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)
关联成功,既有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分支
方式二
git checkout develop # 切换到develop分支
git fetch upstream develop # 获取upstream上的develop分支
git checkout dev
git rebase upstream/develop # 使用rebase模式合并本地的dev和upstream/develop分支
这里采用第二种方式进行验证。
总的来说,可以把本地的develop(master)分支当作一个只负责从上游获取更新的分支,所有本地的改动都不会直接在develop上面进行。
而是先将上游的develop和本地的develop合并,此时,本地的develop是上游的最新版本;
再通过合并dev和本地的develop来完成本地改动的更新。整个过程在未开始合并之前,你的代码更新应该只会出现在dev分支上。
注意:在使用 git rebase 相关的命令时,需要谨慎应用在已经提交的更新或远程仓库上。
推送(push)到副本仓库
现在,已经完成代码的修改、上游的同步更新并且完成了合并。接下来应该将代码 push 到副本仓库。
git push origin dev # 将本地dev分支的代码push到origin的dev分支
# 如果该分支不存在则会创建
这个 push 只会更新副本仓库,并不会影响到原始仓库。要将代码贡献到原始仓库,还要发起 Pull Request。
发起合并请求(Pull Request)
直接在GitHub网页上发起对应的pull request请求。
新一轮功能修改
上述功能修改完毕,则可删除副本仓库中的dev分支。
新功能的修改,继续重复上面的创建本地分支、修改代码、执行add和commit操作、更新合并upstream(可放在创建分支之前和代码修改过程中的提交变动)、将本地新建分支推送至副本仓库、基于部分仓库创建Pull Request。
博主简介:《SpringBoot技术内幕》技术图书作者,酷爱钻研技术,写技术干货文章。
公众号:「程序新视界」,博主的公众号,欢迎关注~
技术交流:请联系博主微信号:zhuan2quan
相关文章
- 利用谷歌colab跑github代码AttnGAN详细步骤 深度学习实验(colab+pytorch+jupyter+github+AttnGAN)
- idea上将项目上传到github
- github下载加速
- 在Github愉快的玩耍
- 重磅!GitHub 推出 AI 自动写代码神器,再也不用到处找代码了…
- 8 个你必须要掌握的 GitHub 实用技巧!.md
- 想用代码改变世界?先用好Git和Github!
- 配置github的pull request触发jenkins自动构建
- 实战:向GitHub提交代码时触发Jenkins自动构建
- 从github上下载代码到本地
- Github搜索代码技巧
- 2022-11-30 Github Forking 工作流模式
- 完美解决github访问速度慢、图片无法显示问题
- unable to access ‘https://github.com/xxxxxx/‘: Empty reply from server
- 【开发环境】PyCharm 配置 GitHub ( 从 GitHub 中 Clone 代码到 PyCharm 开发环境中 )
- 【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )
- github 后面加 1s 进入类似 vscode 的样式可以更好的阅读代码
- 2019-11-20-Github-给仓库上传-NuGet-库
- [转载]如何使用Git上传项目代码到github
- 天下开源是一家,GitHub 收购 npm