前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何优雅的在GitHub贡献代码

如何优雅的在GitHub贡献代码

作者头像
程序新视界
发布2021-12-07 15:07:51
7400
发布2021-12-07 15:07:51
举报
文章被收录于专栏:丑胖侠丑胖侠

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

Fork代码

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

Clone副本仓库到本地

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

代码语言:javascript
复制
git clone git@github.com:secbr/nacos.git

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

创建本地分支

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

代码语言:javascript
复制
git checkout -b dev # 创建并切换到dev分支

本地仓库提交

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

相关命令:

代码语言:javascript
复制
git add . # 添加修改文件
git commit -m 'remove the if statement' # 提交 commit

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

跟踪原始仓库(upstream)合并

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

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

查看仓库关联情况命令:

代码语言:javascript
复制
(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:

代码语言:javascript
复制
git remote add upstream git@github.com:alibaba/nacos.git

再次查看关联情况:

代码语言:javascript
复制
(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)更新了很多提交,则可有两种方式拉取并合并上游的更新。

方式一
代码语言:javascript
复制
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分支
方式二
代码语言:javascript
复制
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 到副本仓库。

代码语言:javascript
复制
git push origin dev # 将本地dev分支的代码push到origin的dev分支
# 如果该分支不存在则会创建

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

发起合并请求(Pull Request)

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

新一轮功能修改

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

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

博主简介:《SpringBoot技术内幕》技术图书作者,酷爱钻研技术,写技术干货文章。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Fork代码
  • Clone副本仓库到本地
  • 创建本地分支
  • 本地仓库提交
  • 跟踪原始仓库(upstream)合并
    • 方式一
      • 方式二
      • 推送(push)到副本仓库
      • 发起合并请求(Pull Request)
      • 新一轮功能修改
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档