大白话讲解如何给github上项目贡献代码
本文献给对git很迷茫的新手,注意是新手,但至少会点基本操作,有点基本概念的新手,我不会从怎么用github和git是什么开始讲的。如果作为新手你看书又看不进去,原理又太复杂,又没有直接了当告诉我们怎么给项目贡献代码,和项目同步代码的大体流程。于是我快速写了这么个东西。一来整理下自己混乱的思路,二来想号召大家一起用git开发点东西,可是好几个同鞋只会寂寞的给自己push。
我先说下 我之前对github操作的一些迷茫历程,然后之后是怎么解惑的。
最最开始
我以为git clone [项目地址],也就是把代码clone下来 然后修改,然后push到项目里就可以了。
后来发现,这种情况只适合该项目属于你自己的情况,如果你git clone别人的项目代码,你想push都push不上去,因为 git push 不是需要你输入github帐号密码么。
然后 #
我就知道了 github上 不是有个fork么, 好,那么给别人的项目提交代码的方式就有了,先fork下别人的代码,于是你的github上就出现了同名的项目,这个项目就属于你自己了,你把这个自己的项目git clone到本地,修修改改,然后push到你自己的项目里,那么你如何把你对自己项目的改动,给发到之前fork的那个原项目呢,看见了没,在github上你的项目页面有个按钮,叫Pull request,对 你点它就会把你的修改发到对方的项目里,人还会收到邮件呢,由原项目主人决定是否接受你的修改。
但是,这样问题就出来了,在你fork他的项目之后,如果他又更新了代码,你自己fork的项目怎么做到和原项目同步呢?
我就想啊,是不是 我还得重新git clone原项目的代码,然后手动合并到我fork的项目里呢。。。
梁老师说,你丫这太蛋疼了,肯定不是这么麻烦,我细想,也是啊,这不2么。。。
然后
从《Pro git》上看到一个知识点,我擦,github居然可以给项目添加合作者,也就是说,假如你,对,说你呢,戴眼镜那个,你想参与我的项目,你跟我说一声,我就把你添加到我的项目里作为合作者,这个选项在项目的设置里面有,只要我添加你了,你就可以git clone我的代码然后修修改改,然后直接push上来就行了,就不用fork那么麻烦了,如果你要更新服务器代码,只要git pull就行了,看 合作者这东西多方便,就像我们在公司用svn似的。
然后 #
我就想啊,有了合作者还需要你丫fork这个功能干啥?仔细一想,你写个好项目,不能随便加合作者啊,加了个熊孩子把你代码改废了可咋整,这年头熊孩子很多,我自己不就是一个么。所以fork肯定还是需要,fork就是专门预防熊孩子的,这就是真相!那么前面说道到fork之后如何与原项目同步的问题还在啊,没有得到解决。
于是
《Pro git》再次给了我一个解答,具体流程是你啊想给我的项目做贡献,你先git clone我的代码到本地,然后修修改改,然后你不是不能push到我的项目里么,你可以先在github页面上fork我的项目,有了你自己的项目地址(url)之后呢,你在本地操作git remote add [sort name] [your url],意思就是添加第二个远程仓库地址,这个仓库的“昵称”就是你刚指定的[sort name],然后,你之后push文件呢 就通过指定这个[sort name]来push到这个你自己的仓库里。等你觉得想要把你改的发给原项目同步,就在你的项目上点Pull request按钮.说下另一种情况,如果是,原项目发生了改动,你要想同步到本地,就直接从git fetch origin 从原项目的地址同步代码,然后再merge就好了。当然,如《Pro git》上所写,你可以通过新建分支的方式往自己的项目上push,这样同步的时候直接fetch就行了。这块如果我没写明白或者你想知道怎么新建分支的方式push到自己的项目里,可以直接参考《Pro git》的“公开的小型项目”一节,那我的贡献就是指点你如何从这本书里快速的找到你想要的。= =。
好了,时间有限,我写的快不一定讲明白,欢迎跟我讨论。
感谢linus,感谢git,感谢github,感谢kindle,感谢《Pro git》,感谢梁老师,感谢我自己,感谢所有的熊孩子们。
大白话讲解如何给github上项目贡献代码的更多相关文章
- 花20分钟写的-大白话讲解如何给github上项目贡献代码
原文地址:http://site.douban.com/196781/widget/notes/12161495/note/269163206/ 本文献给对git很迷茫的新手,注意是新手,但至少会点基 ...
- (转)大白话讲解如何给github上项目贡献代码
转自:https://site.douban.com/196781/widget/notes/12161495/note/269163206/ 2013-03-30 22:53:55 本文献给对g ...
- 使用BigQuery分析GitHub上的C#代码
一年多以前,Google 在GitHub中提供了BigQuery用于查询的GitHub上的开源代码(open source code on GitHub available for querying) ...
- (转)GitHub Desktop 拉取 GitHub上 Tag 版本代码
转自:GitHub Desktop 拉取 GitHub上 Tag 版本代码 一直在使用 GitHub Desktop 图形化 git 管理工具,统一项目框架版本时需要切换到ThinkPHP Tag 分 ...
- GitHub上YOLOv5开源代码的训练数据定义
GitHub上YOLOv5开源代码的训练数据定义 代码地址:https://github.com/ultralytics/YOLOv5 训练数据定义地址:https://github.com/ultr ...
- GitHub上fork一个项目贡献代码以及同步原作者的修改【转】
如何贡献自己的力量 首先你总得有自己的github帐号吧,注册一个,非常简单,只需用户名,邮箱,密码,邮箱只是用来找回密码的,不做验证.因此注册后立即能用!比如我现在新注册一个叫JsLouvre的示范 ...
- Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码
前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...
- 适合小白的大白话讲解--->Git与Github的区别
本文由 伯乐在线 - 听风 翻译,艾凌风 校稿.未经许可,禁止转载!英文出处:Red Radger.欢迎加入翻译组. 本文旨在使用通俗易懂的文字,讲解版本控制背后的理论,以便你能对程序员们如何工作有个 ...
- GitHub上项目配置和导入eclispe的问题解决
在github上下载的工程文件导入的时候总是遇到各种各样的问题,昨天晚上瞎忙一晚上查资料没搞定.早上找高手请教了一下,一起弄了好一会终于解决了,这里记录一下方法解决的具体方法步骤. 本方法适用于离线导 ...
随机推荐
- Shiro理解与总结
Feature Apache Shiro is a comprehensive application security framework with many features. The follo ...
- 【工具】PC端调试手机端 Html 页面的工具
一.概述 有一个项目需要在手机端显示一个 web 页面,而每次把应用 launch 后,从手机端看比较麻烦,因此搜罗了几种在 PC 端调试手机端页面的工具. 二.工具 http://fonkie.it ...
- Spark机器学习3·推荐引擎(spark-shell)
Spark机器学习 准备环境 jblashttps://gcc.gnu.org/wiki/GFortranBinaries#MacOS org.jblas:jblas:1.2.4-SNAPSHOT g ...
- shell 中的 eval 及 crontab 命令
eval eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义.也就是说,eval命令将会首先扫描命令行进行所有的置 ...
- android timed gpio (linux 3.0.0) 受时钟控制的gpio【转】
本文转载自:https://blog.csdn.net/linxi_hnh/article/details/8043417 1 路径: drivers/staging/android/timed_gp ...
- [CF]Cycling City
题目大意:给定一张无向图,问图中是否存在两个点,使得这两个点之间有三条路径,而且三条路径没有公共点. 解法: 我们可以先走出来一个环,再出环上任意一点走到另外一点.就像这样:
- quartz(4)--quartz.properties文件
Quartz有一个叫做quartz.properties的配置文件,它允许你修改框架运行时环境.缺省是使用Quartz.jar里面的quartz.properties文件.当然你应该创建一个quart ...
- java 判断对象的所有属性是否为空解决方案
public static boolean allfieldIsNUll(Object o){ try{ for(Field field:o.getClass().getDeclaredFields( ...
- Spring -- 入门,装备集合,自动装配,分散装配,自定义编辑器
1. 概要 struts2:web hibernate:持久化 spring:业务层.管理bean的,容器.List Map Set. 体验spring: 1.创建java项目. 2.引入spring ...
- Reverse Nodes In K Group,将链表每k个元素为一组进行反转---特例Swap Nodes in Pairs,成对儿反转
问题描述:1->2->3->4,假设k=2进行反转,得到2->1->4->3:k=3进行反转,得到3->2->1->4 算法思想:基本操作就是链表 ...