【原创】30分钟入门 github
很久没更新了,这篇文章重点在github的入门使用,读者可以下载github for windows shell,边看边操作,加深印象。
好了,30分钟的愉快之旅开始吧:
一、github使用的注意事项:
1.对于某一次更新提交,必须要有这次操作的commit操作,git commit -m “评论内容”,这样才能成功提交。
2.对github的使用是本地修改再提交的过程。本地操作的时候,文件夹名字和远程resipository尽量一致。
3.使用别人的开源项目时,需要先把对方的项目fork到自己的github下,然后再clone下载到本地修改。
4.新建仓库的时候,先从web登录自己的github,新建仓库,之后本地操作就可以往仓库里提交内容了。
二、github基本使用:
1.下载项目 ,clone命令
例如,下载用户名为xiaobocser下的hbase项目
git clone https://github.com/xiaobocser/hbase.git
clone操作不会输入用户名和密码,下载到当前所在目录下。
2.提交修改,add commit命令
例如,向hbae项目提交README.txt文件的修改
2.1 git add README.TXT //此处可以有多个add,但是若想更新远程仓库,需要对这系列操作有一个commit说明
2.2 git commit -m “modify the way of wal” //双引号里面是对此次修改的说明
2.3 git remote add hbase https://github.com/xiaobocser/hbase.git //添加远程端口,hbase是这个远程端口的名字。可以自己任意起名字。
2.4 git push hbase master //提交修改到远程仓库。hbase是个刚刚设置的端口,master是版本名称。
这一步会输入用户名和密码,即实例中xiaobocser的用户名和密码。
图2.1 add和commit关系
3.版本维护 ,3个发展过程
3.1本地维护。这种维护的缺点很明显,一个是自己容易把版本之间搞混。二是不利于协同开发。
图3.1 本地维护
3.2 集中维护。这种维护的缺点是一旦网络出问题,或者服务器出问题,开发就会受到影响。SVN即这种方法。
图3.2 远程维护
3.3 分布维护。这种维护比较好,本地操作不受其它因素限制,修改完后可以提交,分享。Github使用。
图3.3 分布维护
3.4 github的版本维护,分支。
图3.4 github分支图
3.4.1 git checkout -b feature_x_test //新建一个分支,feature_x_test是分支名称
3.4.2 git push hbase feature_x_test //把修改更新到此分支
3.4.3 git merge master feature_x_test //master:源 feature_x_test:目的
//////以下操作可以不进行
3.4.3 git checkout master //切换分支
3.4.4 git checkout -d feature_x_test //删除该分支
4. 查看状态及恢复
4.1 git status //查看状态
4.2 git reset --hard //恢复修改
4.3 git diff trunk xiaobocser //查看trunk分支和xiaobocser分支有哪些文件不同
5. 恢复之前设置的状态
5.1 git init 可以恢复上面的误操作,比如更改当前目录等等
5.2 git rm 删除文件或目录
三、github协同开发(如何给github上的项目贡献代码)
二.1里提了一下,可以clone别人的代码到本地,然后自己修改。但是这里会有两个问题:1.自己虽然改了,但是如何提交给该项目呢?或者说如何通知他呢?2.源项目的代码可能会更新,那么我如何保持和它的同步呢?那么按问题回答。
1.提交项目代码
因为项目是人家的,所以自己不可能想提交就提交。所以有个通知的机制。
1.1 fork该项目代码
1.2 自己的账户下会有该代码
1.3 clone代码到本地并修改
1.4 如果想提交给源项目,在自己帐号该项目处点击Pull Requests。
1.5 源项目会收到通知及邮件,以决定是否要把提交的修改加入。
2.保持同步
使用merge来保持同步
2.1 git remote add origin https://github.com/apache/hbase.git //添加指向源项目
2.2 git fetch origin master //从源项目同步代码
2.3 git log -p master.. origin/master //比较本地仓库和远程仓库的不同
2.3 git merge origin/master //合并到本地
3.添加合作者(不同于1和2)
这个是对信任的开发者,或者说是“自己人”使用的一种方法。即合作者有权直接添加修改等等,进而省去了1和2这样的麻烦。而1和2一般是针对未知开发者设定的。
对于1,这种模式下可以直接push修改。对于2,可以直接pull更新。
方法:在项目设置里面添加合作者。 settings->Collaborators->add a friend。
30分钟入门就此结束了,如果大家还有疑问可以留言或自行进入下面的传送门!
祝好!
相关文档推荐
http://git-scm.com/book //git社区参考书 比较权威
http://rogerdudler.github.io/git-guide/index.zh.html //github简易使用指南
blog.csdn.net/hcbbt/article/details/11651229 // 重点在文章最下的推荐文档
http://my.eoe.cn/leigo/archive/3221.html //给github项目贡献代码
http://my.eoe.cn/iceskysl/archive/463.html //git指令集
http://joshuasabrina.iteye.com/blog/1816597 //团队开发环境的设置
http://my.eoe.cn/com360/archive/3533.html //fetch 和 merge 的使用
http://my.eoe.cn/iceskysl/archive/3195.html //一个实际的例子讲解如何参与github合作开发
转载请注明出处~ http://www.cnblogs.com/xiaoboCSer/p/4378451.html
【原创】30分钟入门 github的更多相关文章
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Objective-C 30分钟入门教程
Objective-C 30分钟入门教程 我第一次看OC觉得这个语言的语法有些怪异,为什么充满了@符号,[]符号,函数调用没有()这个,但是面向对象的高级语言也不外乎类,接口,多态,封装,继承等概念. ...
- 30分钟入门Java8之方法引用
30分钟入门Java8之方法引用 前言 之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法.今天我们继续学习Java8的新语言特性--方法引用(Method Referenc ...
- 30分钟入门Java8之默认方法和静态接口方法
30分钟入门Java8之默认方法和静态接口方法 前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方 ...
- 正则表达式30分钟入门教程<转载>
来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial. 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了 ...
- Python 30分钟入门指南
Python 30分钟入门指南 为什么 OIer 要学 Python? Python 语言特性简洁明了,使用 Python 写测试数据生成器和对拍器,比编写 C++ 事半功倍. Python 学习成本 ...
- PHP正则表达式30分钟入门教程
正则表达式30分钟入门教程 三个常用的知识点: 1.惰性匹配:正则引擎默认是贪婪的,若要最少重复的话,需要用到惰性匹配符 “?” 懒惰限定符 代码/语法 说明 *? 重复任意次,但尽可能少重复 +? ...
- HTML 30分钟入门教程
作者:deerchao 转载请注明来源 本文目标 30分钟内让你明白HTML是什么,并对它有一些基本的了解.一旦入门后,你可以从网上找到更多更详细的资料来继续学习. 什么是HTML HTML是英文Hy ...
- js正则表达式30分钟入门教程
2011-10-27 13:23:15 如何使用本教程 最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :) 别被下面那些复杂的表达式吓倒,只要 ...
随机推荐
- 【采集】php str_replace
<?php function my_str_replace($xmlHttp,$order='asc'){ if($order=='asc'){ return str_replace(array ...
- per-project basis
Of course, HSQLDB connection parameters should be stored on a per-project basis, instead of only onc ...
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
<?php $link=mysql_connect('localhost','root',”); mysql_select_db('abc',$link); $sql = “select * f ...
- cocos2dx中的背景图层CCLayerColor和渐变图层CCLayerGradient
1.CCLayerColor是专门用来处理背景颜色的图层,它继承自CCLayer,可以用来设置图层的背景颜色,因为CCLayer默认是透明色的,即无颜色的 2.CCLayerGradient是用来显示 ...
- 使用jquery控制只能输入数字,并且关闭输入法(转)
控制文本框只能输入数字是一个很常见的需求,比如电话号码的输入.数量的输入等,这时候就需要我们控制文本框只能输入数字.在用js控制之后在英文输入法的状态下去敲击键盘上的非数字键是输不进去的,然而当你转到 ...
- DB天气app冲刺二阶段第五天
昨天什么事情也没做..看了一场哆啦a梦 所以就不算冲刺了.. 今天主要就是做了一下需要用到的图片的整理还有的就是UI主界面需要展示用的素材,发现好多东西都需要搜索半天,虽然这个不是什么技术活..但真的 ...
- Start my cnBlogs
Compared to CSDN blog, althought it's my first time to use CNBlog,i felt it makes me more comfortabl ...
- QT模态弹出对话框
QDialog QWidget 默认show()都是非模态 如果需要模态显示, QDialog ==> setModal(true); show(); exec(); QWidget ==> ...
- BZOJ 2753 [SCOI2012] 滑雪和时间胶囊 最小生成树
题目链接: 题目 2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec Memory Limit: 128 MB 问题描述 a180285非常喜欢滑雪.他来到一座雪山, ...
- LINQ基础
以下为<C#图解教程>读书笔记 LINQ是 直接嵌入C#的强类型查询语言 与LINQ相关的特性: 隐式类型的本地变量:使用var 对象/集合初始化语法:对象初始化语句/对象初始化器/对象初 ...