转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzgp.html

作为一个程序猿,如果没有接触过stack overflow和Github,就如同在江湖中行走,却把师傅临行赠送的宝刀屠龙和倚天长剑废弃不用。

Stack Overflow还好,一个简单易用的社交问答网站,使用起来很方便。

Github就相对复杂一点,但功能也更强大一些,甚至连google都在使用它来管理开源项目的不同版本。

以下将对如何配置Github,如何上传和管理自己的项目进行简单的说明。

第一部分 Git的工作原理

GitHub的核心是一个开源版本控制系统VCS(version control
system),称作Git。Git是由设计Linux系统的同一帮人搞出来的。

如果想了解更多有关Git的东西,不妨看看这里:http://progit.org/book/ch1-3.html

这里简单说明一下:

首先是一般的版本控制系统的工作方式:

然后是Git的工作方式:

也就是说,每次提交版本变动的时候,git会保存一个快照(snapshot)。如果文件没有被更改,git也不会再次保存,而是提供一个到原来文件的链接。这样一来,git更像是一个小型的文件系统。

此外,git的所有操作都可以是本地的,仅仅在将新版本的内容上传到服务器上时才需要连接网络。

git里面使用了SHA-1检验,因此,你几乎不可能瞒过git对项目代码进行任何修改。

git只会添加数据,而不会删除数据。因此不要担心我们做一些测试时会破坏原有的数据。

git的三种状态:已提交,已更改,和已标记。

已提交表示数据已经安全存储在本地数据库,已修改表示已经修改了文件,但还没有提交到数据库,已标记表示已经在当前版本标记了一个更改的文件,以便进入下一次提交的快照。

参看下图:

Git目录是Git保存元数据和对象数据库的地方。这也是Git最重要的部分。

working directory是项目某个版本的内容。

staging area是一个简单的文件,通常包含在Git目录中。其中存储了将要进入下一次提交的信息。

Git的基本工作流程如下:

1.在working directory中修改文件。

2.标识(stage)文件,并将文件快照添加到staging area。

3.执行commit,将获取staging area中的文件,并将快照永久保存到Git目录中。

第二部分 设置Git

1.下载安装Git

从以下链接下载安装最新版本的Git: http://code.google.com/p/git-osx-installer/downloads/list?can=3

如果打开不了这个页面,那么只有上VPN了。

虽然文件名的后缀是-snow-leopard.dmg,但是在Lion系统下也完全可以使用。

2.设置SSH

我们会使用SSH密钥在本地电脑和GitHub服务器之间建立安全连接。设置SSH并不复杂,只是需要使用命令行工具。

首先使用电脑右上角的Spotlight找到Terminal(终端工具)。

如果之前没用过Terminal的命令行,那么不妨去了解一下一种叫Bash的脚本语言。这里默认你懂,那么就继续吧。

(1)检查是否已有SSH key

输入以下命令:

$ cd ~/.ssh

如果提示“No such file or directory“,则跳转到第3步,如果不是则继续第2步。

(2)备份并删除已有的SSH key

$ ls

Lists all the subdirectories in the current directory

config id_rsa id_rsa.pub known_hosts

$ mkdir key_backup

makes a subdirectory called "key_backup" in the current
directory

$ cp id_rsa* key_backup

Copies the id_rsa and id_rsa.pub files into key_backup

$ rm id_rsa*

注意,以上只有美元符号后面才是你要在命令行中输入的命令,其它是对该命令的解释说明,或者输入命令后返回的结果。

(3).创建一个新的SSH key

$ ssh-keygen -t rsa -C "your_email@youremail.com"

Creates a new ssh key using the provided email

Generating public/private rsa key pair.

Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa):<press
enter>

首先注意,your_email@youremail.com这里要用你自己的邮箱地址,可别真的复制粘贴这个命令,那就有点2B了。

然后会提示输入passphrase(密码):

Enter passphrase(empty for no
passphrase):<输入你的密码>

Enter same passphrase
again:<再次输入你的密码>

然后就会显示类似下面的结果:

(4)将SSH key添加到GitHub中

在GitHub网站登录中点击Account Settings,然后点击SSH
Keys<,点击Add SSH Key,参考下图:

使用文本编辑器打开id_rsa.pub文件。就会显示你的公共SSH密钥。

当然,这个文件属于隐藏文件,如果不知道怎么显示mac系统下的隐藏文件,可以使用下面的命令行:

$ pbcopy < ~/.ssh/id_rsa.pub

然后把它复制到”Key”字段中,参考下图:

(5)测试

为了确保一切正常,需要进行小小的测试。

在命令行中输入下面的命令:

$ ssh -T git@github.com

正常情况下会显示:

输入yes,就会看到:

Hi username! You’ve successfully authenticated,but GitHub
does not provide shell access.

3.设置信息

现在Git已经设置完毕,也输入了SSH Key,就可以配置个人信息了。

(1)设置用户名和email

$ git config --global user.name "Firstname Lastname"

Sets the name of the user for all git instances on the
system

$ git config --global user.email your_email@youremail.com

需要注意的是,这里的name是你的真名,不是Github的注册账号。

(2)设置GitHub token

有些工具可以无需使用SSH连接到GitHub,这样就必须设置API Token。

在网页上点击Account Setting,

然后在命令行中输入下面的命令:

$ git config --global github.user username

Sets the GitHub username for all git instances on the system

$ git config --global github.token
0123456789yourf0123456789token

注意,其中的绿色部分是GitHub用户名和刚才的API Token。

此外,每次修改了GitHub密码后,都会创建新的API Token。

到这里,Git的设置工作就圆满了。

【转】Github轻松上手1-Git的工作原理与设置的更多相关文章

  1. 代码管理工具 --- git的学习笔记二《git的工作原理》

    通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...

  2. GIT的工作原理和基本命令

    1.GIT的工作原理 工作区:我们写代码的地方. 暂存区:临时存储用的. 历史区:生成历史版本的地方. 提交流程:工作区->暂存区->历史区 图示: 2.GIT的全局配置 3.创建仓库完成 ...

  3. drf框架中认证与权限工作原理及设置

    0909自我总结 drf框架中认证与权限工作原理及设置 一.概述 1.认证 工作原理 返回None => 游客 返回user,auth => 登录用户 抛出异常 => 非法用户 前台 ...

  4. 【转】Github轻松上手4-常用的git命令

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzih.html 附上一些git的常见命令: •    git remote add origin git ...

  5. 【转】Github轻松上手5-站在巨人的肩膀上(Fork)

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzj3.html 有时候你可能想给别人的项目出把力,或者想以别人的项目作为自己项目的起点,在Github里 ...

  6. 【转】Github轻松上手2-如何使用命令行创建和管理repo

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzhd.html 如果你对这种怀旧的方式很感冒,不妨参考这里: http://help.github.co ...

  7. fiddler工作原理和设置代理问题

    1,什么是Fiddler Fiddler是一个http协议调试代理工具,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点.调试web应用.修改请求的 ...

  8. 【转】Github轻松上手3-使用Tower图形化界面工具创建和管理repo

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzib.html 除了在命令行中输入特定的命令,另外一种方式就是用第三方的可视化工具,比如Mac下的Tow ...

  9. 【转】Github轻松上手6-推荐follow的牛人和值得watch的repo

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzk5.html Github作为一个social coding 网站,其作用远远超过了一个简单的VCS( ...

随机推荐

  1. MySQL 5.7原生JSON格式支持

    在MySQL与PostgreSQL的对比中,PG的JSON格式支持优势总是不断被拿来比较.其实早先MariaDB也有对非结构化的数据进行存储的方案,称为dynamic column,但是方案是通过BL ...

  2. Unity3D Script Execution Order ——Question

    我 知道 Monobehaviour 上的 那些 event functions 是 在主线程 中 按 顺序调用的.这点从Manual/ExecutionOrder.html 上的 一张图就可以看出来 ...

  3. linux源码阅读笔记 jmpi指令(转)

    jmpi是段间跳转指令,用于x86实模式下, 如:BOOTSEG = 0x0c70 jmpi    4, #BOOTSEG 假如当前段CS==00h,那么执行此指令后将跳转到段CS==0x0c70,当 ...

  4. DJANGO中,用QJUERY的AJAX的json返回中文乱码的解决办法

    和网上其它用JAVA或是PHP的实现不太一样, DJANGO中的解决办法如下: 后端样例: def render_to_json_response(context, **response_kwargs ...

  5. lintcode :Remove Duplicates from Sorted Array 删除排序数组中的重复数字

    题目: 删除排序数组中的重复数字 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成.  样例 ...

  6. android MD5

    public static String MD5(String str) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstan ...

  7. 前端必杀技之Javascript 第1天

    学习了javascript基本语法和使用DOM进行简单操作   1.引用javascript方法: a.在<script></script>标签中加入js代码,如: <s ...

  8. 如何写科技文章的讨论discussion部分

    众所周知,讨论部分是在结合自己的研究结果基础上,对整个文章的结论的提炼和升华.这一部分是整个论文的精,往往点睛作用. 同时,很多杂志要求结果和讨论分开,这也就更突出了写好讨论的重要性. 那么,我们应该 ...

  9. openCv 图像顺时针、逆时针旋转

    通过下面这个函数调用 Rotate90(workImg,270); //顺时针旋转 Rotate90(workImg,90); //逆时针旋转 实现,其实用该函数旋转任意度数对正方形图都ok,只是长方 ...

  10. 尝鲜delphi开发android/ios_环境搭建

    Delphi这又老树发新枝了,开始做终端程序开发了,这个东西的准确名字是:RAD Studio XE5,可以使用delphi和c++ builder进行终端开发. 我尽可能讲啰嗦一些,免得回头被人问. ...