fork+pull提交模式

在公司项目中,大多都是通过“主题分支”的方式,进行开发与合并代码。但是,这样又一个弊端就是:合并代码后需要删除分支。同时,如果是开源的项目的话,非项目中的成员是无法创建分支的,也就无法贡献代码。

这个时候,就体现出fork的优势所在了。fork就是把源仓库复制一份到自己的github仓库下,这样非项目中的成员也可以任意修改代码,修改完代码,只要提交pr就可以了。后面的事情就是,项目的所有者要做的了。

同时,项目的所有者也不需要设定主分支的权限,比如:成员不能自行把开发的主题分支直接合并到dev或者master分支上。只有管理者才有这种权限,否则会不便于管理。fork提交的pr不会产生主题分支,也就是不需要合并完pr后删除分支。

如何使用fork模式

  1. fork项目

  2. 设置源项目的远程仓库:git remote add 起一个名字 源项目地址,用于后面的更新代码。

  3. 在dev上直接修改代码

  4. 在push前保证所在分支是最新的:git pull --rebase 刚才起的名字 dev,这里因为是在dev分支上直接修改,所以获取源项目的dev分支的最新代码。

  5. 推送到你fork来的仓库上:git push,push前确定是否关联的是dev分支:git branch -vv

  6. 最后在源项目中提交pr,请求合并你的改动。

在上述过程中,容易混淆的地方就是’源项目‘和’fork的项目’:你没有办法修改’源项目‘,只能修改fork到你自己的github账号仓库下的’fork的项目‘。在提交的时候,需要保证‘fork的项目’是最新,这样在pr前,就可以在你的本地把所有的冲突解决完成,顺利的合并到’源项目‘上。

总结

如果你是项目中的成员,有创建分支的权限,那么用fork模式或者主题分支的模式都可行的,同时没有什么太大的区别。

对于向开源项目贡献代码,那就一定要用到fork模式。

参考

[git]fork+pull提交模式的更多相关文章

  1. git fork后提交pull request到原作者,别人的pull request我们要怎样merge融合

    首先要记住,pull request 不是随便提交的,这是建立在你对原作者的项目有fork,并对项目中的代码有修改,并提交到了你的GitHub上,才能进行下面的操作. 若不知怎样fork项目,请看我的 ...

  2. git fork , git pull request那回事

    git fork 原理 相当于你在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中时,可以pull request,这样原项目的作者就可以将你修改的东西合并到 ...

  3. git fork之如何同步更新

    1.打开git fork的开源项目(这里我以git fork vscode为例): 2.点击New pull request 3.选择你自己的 4.选择完后出现如图 5.调整状态,右边改为源fork地 ...

  4. git subtree pull 错误 Working tree has modifications

    git subtree 是不错的东西,用于 git 管理子项目. 本文记录我遇到问题和翻译网上的答案. 当我开始 pull 的时候,使用下面的代码 git subtree pull --prefix= ...

  5. git无法pull仓库refusing to merge unrelated histories (拒绝合并不相关仓库)

    原文地址 https://blog.csdn.net/lindexi_gd/article/details/52554159 本文讲的是把git在最新2.9.2,合并pull两个不同的项目,出现的问题 ...

  6. git使用,提交代码简记

    强制覆盖本地修改:git reset --hard 项目初始时获取前端代码: git clone https://git.oschina.net/yudian/yudian-frontend.git ...

  7. git创建分支提交到远程分支步骤

    git创建分支提交到远程分支步骤 step1,在本地新建分支() git branch newbranch step2:把本地分支push到远程 git push origin newbranch s ...

  8. git log 查看提交记录,参数:

    git log 查看提交记录,参数:-n (n是一个正整数),查看最近n次的提交信息 $ git log -2 查看最近2次的提交历史记录 -- fileName fileName为任意文件名,查看指 ...

  9. git 修改已提交的注释

    在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息 修改最后一次提交注释 git commit --amend 然后在出来的编辑界面,直接编辑注释的信息,保存退出 gi ...

随机推荐

  1. Python:将utf-8格式的文件转换成gbk格式的文件

    需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: def ReadFile(filePath,encoding="utf-8"): with codecs.ope ...

  2. OpenBTS的安装(转)

    OpenBTS source code可以在这里下载:http://sourceforge.net/projects/openbts/ OpenBTS入门的各种问题可以在这里找到答案:http://g ...

  3. 防止ViewPager中的Fragment被销毁的方法,更加流畅

    在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图: 当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以 ...

  4. ubuntu 休眠之后网络间接失败 can not connect to network after suspend (wake up)

    ubuntu for laptop系统在系统休眠后wakeup 之后,网络连接失败, 有线网络无法连接, 无线wifi无法连接, 只能重启后才能恢复, 此时可以采用以下方法处理: 1. 在/etc/p ...

  5. Gradle自定义你的BuildConfig

    BuildConfig.DEBUG 首先在Gradle脚本中默认的debug和release两种模式BuildCondig.DEBUG字段分别为true和false,而且不可更改.该字段编译后自动生成 ...

  6. oracle小数点前零丢失的问题

    1.问题起源        oracle  数据库 字段值为小于1的小数时,使用char类型处理,会丢失小数点前面的0        例如0.2就变成了.2 2.解决办法: (1)用to_char函数 ...

  7. freemarker springmvc配置异常

    异常信息 java.lang.IllegalAccessError: tried to access method freemarker.ext.servlet.AllHttpScopesHashMo ...

  8. jQuery超炫酷按钮插件及源码

    现在大部分网页的按钮都是经过美化的,那些原始的浏览器按钮太过于枯燥乏味,让用户失去和网站交互的兴趣.早期我们都是通过背景图片来美化网页按钮,而现在我们可以利用扩展性更好的CSS3来制作漂亮的网页按钮, ...

  9. 配置新系统(Win7 x64)

    新装了一个Win7 x64系统.总结了一些系统配置需要注意的地方. 1. C盘空间 发现C盘被用去了50G的空间,在什么软件都没装的情况下,被用去这么多,感到不可思议. 打开控制面板->文件夹选 ...

  10. [整理]C#反射(Reflection)详解

    本人理解: 装配件:Assembly(程序集) 晚绑定:后期绑定 MSDN:反射(C# 编程指南) -----------------原文如下-------- 1. 什么是反射2. 命名空间与装配件的 ...