如何fork自己的github库?
Github上我们经常fork其他人的代码,然后经过一通魔改后弄出"自己"的东西。但是现在我遇到了这么一个需求,就是我已经公开了一个自己的库(暂且叫parent),然后我想基于自己开发的库再创建新的功能,但是又不想让新功能公开,一个很自然的想法是库parent保持公开,然后新创建一条分支隐藏,可惜的是github并不支持这个功能。所以一个可行的办法就是fork自己的库,但是不是直接fork,因为你也没法fork自己的库,间接实现的方法如下:
1) 在github新建一个库child,然后clone到本地
$ git clone https://github.com/your_name/child.git
注意,一个比较重要的概念是github的分支分为本地端和远端,我们先看一下两端的分支情况
- 查看本地分支情况: 输入
git branch命令,可看到输出结果如下。本地只有一个名为master的主分支
*master
- 查看远端分支情况,输入
git remote -v命令,输出结果如下。可以看到只有一个名为origin远端主分支,其中fetch和push表示不同操作,前者是“拿来”意思,也就是同步到本地,后者是“推送”,即将本地代码同步到远端。
origin https://github.com/your_name/child_test.git (fetch)
origin https://github.com/your_name/child_test.git (push)
2) 将parent分支加入到远端分支
cd child
git remote add upstream https://github.com/your_name/parent.git
上面代码的意思是给child库的远端加上一个名字为upstream的分支,该分支路径则是你想要fork的库的路径。
我们可以输入git remote -v查看现在远端分支的情况
origin https://github.com/your_name/child_test.git (fetch)
origin https://github.com/your_name/child_test.git (push)
upstream https://github.com/your_name/parent_test.git (fetch)
upstream https://github.com/your_name/parent_test.git (push)
3) 将远端分支同步到本地
第2步只是远端分支进行了fork,真正要使用代码,我们还需要把upstream远端分支同步到本地,方法如下:
git pull upstream master
如果你遇到了fatal: refusing to merge unrelated histories报错信息,可以加上--allow-unrelated-histories,即
git pull upstream master --allow-unrelated-histories
这样远端parent代码就同步到里新创建的child库了。如果你想要和parent保持一致,可以通过上面的pull方法实现,也可以通过fetch+merge的方式。
简单解释就是:
git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
4) 将修改后的代码同步到远端
这里的远端分为被克隆的parent(即upstream)和child(即origin)。
- 同步到
origin:
git push origin master
- 同步到
upstream:
git push upstream master
当然,如果你不想child影响到parent,你可以在parent的settings/branches里设置Branch protection rules,勾选Require pull request reviews before merging。这样即使你不小心运行了上面的命令也不会将代码同步到upstream。
如何fork自己的github库?的更多相关文章
- 给你的博客加上“Fork me on Github”彩带
起 如今,随着Git的大热以及Github的优越性,许多知名开源项目都将源代码托管到Github上了.在Github上不仅可以托管自己的开源项目,还可以Fork人家的源代码,给自己感兴趣的项目评价(s ...
- 博客加上“Fork me on Github”彩带
给你的博客加上“Fork me on Github”彩带 起 如今,随着Git的大热以及Github的优越性,许多知名开源项目都将源代码托管到Github上了.在Github上不仅可以托管自己的开源项 ...
- git使用之如何将github库下载到本地与如何将代码上传github
git使用之如何将github库下载到本地与如何将代码上传github ---------------------------------------------------------------- ...
- 给博客添加fork me on github图标
首先挑选想要的图标样式 https://blog.github.com/2008-12-19-github-ribbons/ 效果和代码如图 打开博客后台设置,页首html设置 讲网页右边的代码粘贴过 ...
- 页面: Fork me on GitHub
一.实现效果如下: 二.代码地址:https://github.com/blog/273-github-ribbons 这是一个国外网友开发的代码, 里面有很多种样式,可以自已随心选择. 三.我们只拿 ...
- Fork me on GitHub
<a href="https://github.com/yadongliang"><img style="position: absolute; top ...
- 给你的博客加上“Fork me on Github”彩带(转)
给你的博客加上“Fork me on Github”彩带 https://www.cnblogs.com/Leo_wl/p/3608794.html https://github.blog/2008- ...
- fork me on github 彩带设置无效
挑选彩带地址: https://github.com/blog/273-github-ribbons 发现代码复制粘贴过来,但是在自己博客园上无效,如粘贴如下代码 <a href="h ...
- Git 创建版本库并实现本地上传数据到GitHub库
版本库又叫做仓库,其实也是一个目录,这个目录里的所有文件都是被Git管理着,对每个文件的修改,删除,Git都会进行记录,方便我们对其进行跟踪. 因为本地是window环境,我们先从官网下载好windo ...
随机推荐
- (一)JVM快速回顾总结
1,JVM内存结构(JVM体系概述,java8后的JVM) 2,GC的作用域(方法区和线程堆) 3,常见的垃圾回收算法 (1)引用计数 循环引用问题 (1) 那些对象可以作为GC_Root 虚拟机栈( ...
- pycharm添加断点,分段运行,以及继续运行;
1.打断点,只需在代码的前面单机左键即可:2.运行,点击Debug...(如图,像贝壳一样的图标),只会运行第一个红点前的代码: 3.此时若想将第2个红点前的代码运行完毕:点击Resume Progr ...
- 字符设备驱动程序之poll机制(韦大仙)
明确为什么要引用poll机制? while(1) { read(fd,&key_val,1);//如果没有按键按下,它会一直在等待.现在想做这么一件事情:如果5s后,没有按键按下,它就会返回. ...
- [C3] 正则化(Regularization)
正则化(Regularization - Solving the Problem of Overfitting) 欠拟合(高偏差) VS 过度拟合(高方差) Underfitting, or high ...
- (day51)三、ORM、路由层、版本差异、流程图
目录 一.ORM关系建立 (一)ForeignKey(一对多) (二)ManyToManyField(多对多) (三)OneToOneField(一对一) 二.django请求生命周期流程图 三.ur ...
- angular跳转和传参
使用routerLink跳转 <a routerLink=["/exampledetail",id]></a> <a routerLink=[&quo ...
- pandas-缺失值处理
import pandas as pd import numpy as np Step 1.加载数据集 # header=0以第一行作为列名 tip = pd.read_csv("lianx ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块(ESP8266)AT指令TCP透传方式,MQTT通信控制升级(加入数据校验)
前言 这节演示下,上两节写的利用MQTT来控制STM32控制的程序 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 首先BootLo ...
- Fink| API| Time与Window
1. Flink 批处理Api 1.1 Source Flink+kafka是如何实现exactly-once语义的 Flink通过checkpoint来保存数据是否处理完成的状态: 有JobMana ...
- ASP.NET开发实战——(七)ASP.NET与数据库
在之前的文章中介绍了使用ASP.NET MVC来开发一个博客系统,并且已将初具雏形,可以查看文章列表页面,也可以点击文章列表的其中一篇文章查看详情,这已经完成了最开始需求分析的读者的查看列表和查看文章 ...