1、GitHub是什么?

GitHub这个名词既可以是那个流行的代码分享和协作网站 https://github.com/,也可以是指Git客户端工具(与其他的Git客户端工具如GitEye类似,只不过Git仓库托管在GitHub服务器上)。下图即GitHub客户端截图,我已经在GitHub上建立了两个Git仓库(Git仓库地址类似https://github.com/jxqlovejava/MRF.git,以.git结尾),下文所有图片都可以点击看大图(虽然是在Mac系统上操作,使用Windows系统命令行操作也是类似的,之所以采用截图方式是希望大家自己手动敲一遍命令而不是直接拷贝):

为什么使用GitHub?个人认为有几大原因:

  • Git是一个分布式版本控制系统,相对于传统的集中式版本控制系统如SVN拥有不可替代的优势,详细参考 Pro Git中文版
  • GitHub作为一个全球性质的代码分享和协作编辑网站,拥有强大的社区,并提供了功能强大简洁的GitHub客户端(Windows/Linux/Mac三种版本)
  • 几乎所有的开源项目都能在GitHub上找到
  • GitHub提供了方便的“代码社交”支持,如协作编辑、Fork、Follow等

2、安装并设置Git和GitHub

首先当然是下载安装Git,下载地址请移步:http://git-scm.com/downloads

然后下载 GitHub客户端,输入用户名密码(你的GitHub用户名和密码,如果没有GitHub账号请先注册一个)后,出现一个设置窗口,点击Advanced选项卡,在Advanced选项卡面板下部有一个Install Git and Github Command(记得大概是这个),也可以点击这个按钮然后自动安装Git和GitHub命令行工具,我安装在了/usr/local/bin目录下:

然后我们可以给git和github设置别名或者export设置路径,这样之后就可以在任意目录下直接执行git和github命令了:

1
2
alias git='/usr/local/bin/git'
alias github='/usr/local/bin/github'

Git的常用命令如下图:

接下来需要设置默认的git用户名和git邮箱(github注册邮箱),这样设置之后的好处是之后commit本地文件到远程Git服务器时不再需要每次都输入用户名:

更进一步,如果连密码都不想每次都输入,该怎么做?可以用credential-osxkeychain这个工具(应该是Mac上才有的,如果非Mac系统请忽略这一小部分内容):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 测试是否已安装credential-osxkeychain
$ git credential-osxkeychain
 
# 如果已安装,上面会输出Usage: git credential-osxkeychain <get|store|erase>
# 如果未安装,则先用CURL下载git-credential-osxkeychain
$ curl -s -O \
  https://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
 
# 设置下载的git-credentail-osxkeychain文件权限
chmod u+x git-credential-osxkeychain
 
# 将git-credential-osxkeychain移动到git命令行工具所在目录,我的是/usr/local/bin
sudo mv git-credential-osxkeychain /usr/local/bin
# 确认下
cd /usr/local/bin ls
 
# 设置git的credential helper为git-credentail-osxkeychain
$ git config --global credential.helper osxkeychain

经过上面的设置之后,下次只要第一次输入用户名密码后,用户名密码就会被保存在keychain中,后面commit时就再也不需要输用户名密码了。

3、创建并设置Git仓库

在GitHub首页的右上角有一个加号符号,点击它就可以看到下面:

点击“New repository”就可以进入创建Git仓库(这个是托管在GitHub服务器上的远程Git库)页面了:

填好必要的信息之后,点“Create repository”按钮就创建好了一个Git仓库,当然也可以通过GitHub客户端方便地创建Git仓库,不再赘述。创建好的Git仓库路径类似这种:https://github.com/jxqlovejava/MyFramework.git (记住这个,下面会用到)

MRF.git就是Git仓库,它下面可以包含我们的项目文件夹或者其他文件(如说明文件、.gitigonore文件):

MRF.git

|--- MRF

|--- README

|--- ...

下面我们先在本地创建一个项目,并为它绑定一个本地Git仓库,最后git push命令将本地Git仓库提交到远程Git服务器上,第一步创建本地Git库:

然后通过touch和vim命令创建并编辑一个README文件,编辑后按Esc,然后输入w!保存,再输入:q返回

继续通过git add将README设置为staged状态(等待提交),通过git commit提交修改,使得README状态由staged状态变为commited:

最后我们需要将本地git仓库提交到GitHub远程Git服务器上,首先添加remote仓库,并设置它的别名为origin(remote仓库默认名称),然后我们将本地master branch提交到远程Git库:

上面通过git remote add添加了一个远程Git库并为它绑定了一个别名origin,我们可以通过git remote remove origin删除这个绑定关系。master是本地git库的主干分支,类似SVN的trunk。可以通过git status或者git branch查看当前在哪个分支:

当然有时候我们需要新建一个主干分支以外的分支,比如下面创建一个名为myBranch的分支,然后通过git checkout切换到myBranch分支(创建和切换可以合为一个命令git checkout -b myBranch):

在此之后我又切回master主干分支,并且通过git merge将myBranch分支合并到master主干分支,最后通过git -d删除myBranch分支:

4、代码社交化

首先当然是GitHub上最常见的Watch、Fork和Star,前者会把其他人的GitHub托管项目Fork一份成为自己的GitHub库,注意Fork的项目不会与原始项目同步,这意味着今后原始项目再更新,Fork的项目不会随之更新。或者如果对某个GitHub感兴趣,可以通过Watch或Star进行关注,之后在GitHub首页就能看到项目动态:

Fork了代码之后,可以通过git clone把代码拷贝到本地:

然后本地即有了一个名为MRF的目录,其下包含一个README文件,如下:

上面说过Fork的项目不会随着原始项目的更新而更新,那么某些时候有必要手动Pull更新,然后git merge合并到本地git库(远程git库增加了一个test.txt文件):

upstream只是一个命名约定,即别人的远程Git库一般约定为这个别名。

以上基本涵盖了Git和GitHub的一般使用,但还没有涉及如何为其他人创建的Git项目提交代码,但对于自己创建一个GitHub项目并提交代码已经足够了。

如果使用eclipse开发项目,还有EGit和GitHub for Eclipse插件可以提供Git和GitHub功能,篇幅有限,不再多说了。

注:本文参考了GitHub首页的引导教程,更详细的Git使用请参考 Pro Git中文版

来自:http://my.oschina.net/feichexia/blog/192755

GitHub使用详解的更多相关文章

  1. Github .gitignore详解

    在使用git作版本控制时,git会默认把git控制的文件夹里面的所有文件都加入到版本控制.但是在实践中,我们经常会遇到不想某些文件或文件夹被git追踪的情况.比如logs文件.代码构建过程中产生的一些 ...

  2. Github命令详解

    Git bash: ***创建本地版本库: $ cd d: $ mkdir git $ cd git $ mkdir test $ git init   //初始化本地库 ***创建文件并添加到版本库 ...

  3. 上传本地代码到gitHub过程详解

    1.注册Github账号 2.创建自己的GitHub仓库 3.创建自己的Repository(项目的名字等) 4.复制创建仓库的地址到Git命令窗口并执行命令行(Git clone 仓库的复制地址) ...

  4. Android Studio中Git和GitHub使用详解

    一.Git和GitHub简述 1.Git 分布式版本控制系统,最先使用于Linux社区,是一个开源免费的版本控制系统,功能类似于SVN和CVS.Git与其他版本管理工具最大的区别点和优点就是分布式: ...

  5. 使用Git将本地项目上传到Github操作详解

    Git的安装就不说了. 一.建本地仓库 1.第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建. 反正就 ...

  6. Git连接GitHub仓库详解

    [Annotation]本文将从标题八开始,因为前七个标题是关于Git的基本操作,如果对Git的基本操作不了解的话,可以点击下方链接先看一下Git怎么使用. 关于Git的详细使用 八:创建SSH Ke ...

  7. git/github使用详解

    介绍:gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. 2018年6月4日,微软宣布,通过75亿美元的股票交易收购代码托管平台Gi ...

  8. 【iOS 使用github上传代码】详解

    [iOS 使用github上传代码]详解 一.github创建新工程 二.直接添加文件 三.通过https 和 SSH 操作两种方式上传工程 3.1https 和 SSH 的区别: 3.1.1.前者可 ...

  9. GitHub详解(GitHub for Windows)

    GitHub详解 GitHub 是一个共享虚拟主机服务,用于存放使用Git版本控制的软件代码和内容项目.它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath ...

随机推荐

  1. 也说Autofac在MVC的简单实践:破解在Controller构造函数中的实例化 - winhu

    相信大家对Autofac并不陌生,很多人都在使用.本文只是介绍一下本人在使用时的一点想法总结. 在使用一个框架时,肯定要去它的官网查阅一下.autofac的官网给出了一些经典的使用案例.如注册容器: ...

  2. 《Python 学习手册4th》 第十章 Python语句简介

    ''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...

  3. web自动化框架之一介绍与环境搭建(Selenium+Eclipse+Python)

    看到一篇环境搭建文章,详细又全面,这里就不一一重复了 http://blog.csdn.net/dyllove98/article/details/9390649 其它: 1.框架介绍      整个 ...

  4. C#复习反射

    反射中常用方法: //获取对象类型 One one = new One(); Type t = one.GetType(); //动态加载 Assembly a = Assembly.LoadFile ...

  5. C++ 我想这样用(五)

    上一篇说了[C with Class]语法的第一部分,下面继续第二部分: 第二部分:面向过程的编程风格 什么是面向过程我想如果你还不知道,那你绝对不是C程序员!其实我个人感觉面向过程.模块式的C编程风 ...

  6. 小C的填数游戏

    题意: 给出一张n个点的无向图 i连向i-1和i-2 边权为wij 有两个点权ai和bi ai为0或1 在给m个操作 1.将ai异或1 2.将区间x到y的点都填上一个数ci 使得Σ(bi*(ai^ci ...

  7. 高版本myeclipse破解以及优化

    1.破解图 破解myeclipse但是在默认安装目录没有发现common文件夹,该怎么办? 打开myeclipse:  Myclipse-->Installation Summary...,   ...

  8. Java设计模式系列之动态代理模式(转载)

    代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问. 动态代理使用 java动态代理机制以巧妙的方式实现了代理模式的设计理念. 代理模式示例代码 public interface Sub ...

  9. 问题-PopupMenu是哪个控件调用弹出的?

    相关资料: http://bbs.csdn.net/topics/310195683 问题现象:今天有朋友问我个简单的问题,在多个Edit上弹出菜单,怎么判断是哪个Edit调用的.我想了想这个我还真不 ...

  10. Cognos报表打开参数

    查看门户页面 http://localhost:9300/p2pd/servlet/dispatch? b_action=xts.run &m=portal/cc.xts &gohom ...