网站首页 > 技术文章 正文
前言:
在项目开发中我们会遇到fork了上游的仓库,但是我们需要更新最新的代码或者把自己修改的代码向上游合并。
有人会说更新最新的上游代码,最简单办法就是删掉现在的fork仓库,重新去fork,但是很多时候我们还要把我们修改的代码进行合并的主分支去。这个时候我们的首选就是今天本文介绍的方法了。
给大家分享一下自己的实操。
作者:良知犹存
转载授权以及围观:欢迎关注微信公众号:羽林君
或者添加作者个人微信:become_me
步骤须知:
在第一步我们要知道,fork仓库之后,我们做了自己的修改之后再次合并到主分支的流程。大致如下。
- 派生一个项目
- 从 master 分支创建一个新分支
- 提交一些修改来改进项目
- 将这个分支推送到 GitHub 上
- 创建一个拉取请求
- 讨论,根据实际情况继续修改
- 项目的拥有者合并或关闭你的拉取请求
- 将更新后的 master 分支同步到你的派生中
上手操作:
先fork一个仓库,这样你就有可以自己修改的一个下游仓库了。
你可以在你的下游仓库里面做你想要的增改删。但是这个时候就会出现一个问题,如何把你修改的部分合并到主分支给大家一起用呢。
下面就是本文主要描述的部分:
增加一个上游仓库地址
首先我们先去查看自己的现有的远程仓库地址,使用命令如下:
git remote -v
这个时候我们看到上面只有2行,说明你未设置 upstream (中文叫:上游代码库)。所以我们需要设置上游仓库,一般情况下,设置好一次 upstream 后就无需重复设置。
使用命令增加你的的上游仓库地址,使用命令如下:
git remote add upstream http://192.168.1.xx/xxx/xxxxxx.git
git remote add 命令我们应该比较熟悉,就是做远程仓库连接配置的。
配置完成之后,我们用git remote -v命令再次查询,这个时候就看到了配置好的upstream地址。这个时候我们就可以随意拉去上游仓库的代码了。用如下命令:
git fetch upstream (后面可以加上指定的分支也可以不加)
上下游代码进行合并
现在代码我们可以随意修改了,但是一般来说我们修改代码时候,上游仓库也会有很多和我们不同步的修改,这个时候我们想要把我们代码像上游代码合并的第一件事,就是先把上游仓库新修改的部分代码进行合并到我们修改好的代码中来。
这个时候就是我们平常操作的部分了,fetch下来之后进行merge
git merge upstream/xxx (xxx代表你想合并的分支)
在这里插入图片描述
在合并之后我们看到其中有些部分可以自动合并,有些会产生conflict,我们需要手工进行修改,这个部分就是我们git里面的基本操作了哈。合并冲突代码这个部分现在主流的代码编辑器都可以人性化的提示,如果需要看的话,大家也可以看我之前的git文章合集哈。
执行命令 git push 把本地仓库向github仓库(你fork到自己名下的仓库)推送修改。现在你已经解决了fork的仓库和原仓库版本不一致的问题。可以放心向上游 发起 pull request 了。
这个时候如果你有对上游仓库的修改权限你可以用git checkout切换到上游的分支,直接把代码进行推送。
但是一般我们是没有权限的,这个时候我们就需要进行一次合并请求。
例如我在github上fork了瑞芯微的一个仓库。
当我做了一些修改之后,我就可以在上游仓库的界面中选择pull request,再点击新建一个合并请求。如下所示:
然后在界面里填写自己的标题和合并的一些原因。
等待管理员确认合并之后代码就合并到上游仓库,大家就可以用到你修改的代码了。
结语
这就是我分享的项目合作中git工具的一些操作,如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。
作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。
END
推荐阅读
【1】C++的智能指针你了解吗?
【2】嵌入式底层开发的软件框架简述
【3】CPU中的程序是怎么运行起来的 必读
【4】cartographer环境建立以及建图测试
【5】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比
本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。
猜你喜欢
- 2025-09-19 模块大改造:Rust 多模块文件重构终极指南
- 2025-09-19 Git可视化极简易教程 — Git GUI使用方法
- 2025-09-19 git 一个可以提高开发效率的命令:cherry-pick
- 2025-09-19 项目常用GIT操作命令_git创建项目命令
- 2025-09-19 解决git中的detached问题_git denied
- 2025-09-19 阿里,腾讯,百度等大厂都在采用的Git,据说都来脱形自这份文档
- 2025-09-19 Git rebase -i命令说明_git的rebase命令
- 2025-09-19 团队 Git 分管理全流程规范_git管理项目流程
- 2025-09-19 Git 分支管理:从入门到规范,这是我见过最好的实践总结
- 2025-09-19 第三章:Git分支管理(多人协作基础)
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)