【 github】 入门教程

摘自:

http://www.eoeandroid.com/thread-274556-1-1.html

http://www.cnblogs.com/fnng/archive/2011/08/25/2153807.html

http://rangercyh.blog.51cto.com/1444712/749490

 

Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。同样,eoe.cn客户端的源码也托管在github上。

GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。

 

 

使用方法:

1 注册账户以及仓库

要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。

 

2.安装客户端msysgit

github是服务端,要想在自己电脑上使用git我们还需要一个git客户端,我这里选用msysgit,这个只是提供了git的核心功能,而且是基于命令行的。如果想要图形界面的话只要在msysgit的基础上安装TortoiseGit即可。

装完msysgit后右键鼠标会多出一些选项来,在本地仓库里右键选择Git Init Here,会多出来一个.git文件夹,这就表示本地git创建成功。右键Git Bash进入git命令行,为了把本地的仓库传到github,还需要配置ssh key。

 

3.配置Git

首先在本地创建ssh key;

[mw_shl_code=java,true] $ ssh-keygen -t rsa -C "[email protected]"[/mw_shl_code]
后面的[email protected]改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。

回到github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。为了验证是否成功,在git bash下输入:

[mw_shl_code=java,true]   $ ssh -T [email protected]   [/mw_shl_code]
如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

[mw_shl_code=java,true]$ git config --global user.name "your name"
$ git config --global user.email "[email protected]"
[/mw_shl_code]
进入要上传的仓库,右键git bash,添加远程地址:

[mw_shl_code=java,true]    $ git remote add origin [email protected]:yourName/yourRepo.git    [/mw_shl_code]
后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。

 

 

4.提交、上传

接下来在本地仓库里添加一些文件,比如README,

[mw_shl_code=java,true]$ git add README
$ git commit -m "first commit"[/mw_shl_code]
上传到github:

[mw_shl_code=java,true]$ git push origin master
[/mw_shl_code]
git push命令会将本地仓库推送到远程服务器。
git pull命令则相反。

修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。

 

 

 

以创建一个hello world为例:

1 到github首页,点击页面右下角“New Respository”

填写项目信息:

project name:hello world

description:my first project

点击“Create Repository” ; 现在完成了一个项目在github上的创建。

 

 

2. 我们需要使用git在本地创建一个相同的项目。

$ makdir ~/hello-world    //创建一个项目hello-world

$ cd ~/hello-world    //打开这个项目

$ git init    //初始化 

$ touch README

$ git add README   //更新README文件

$ git commit -m 'first commit'//提交更新,并注释信息“first commit” 

$ git remote add origin [email protected]:defnngj/hello-world.git   //连接远程github项目  

$ git push -u origin master   //将本地项目更新到github项目上去

现在查看github上面的hello world 项目,发现已经将本地中的README文件更新上来了。

 

 

 

 

 

 

 

------------------------------------关于可能出现的错误----------------------------------

1.在执行

$ git remote addorigin [email protected]:defnngj/hello-world.git

错误提示:fatal: remote origin already exists.

解决办法:

$ git remote rm origin

然后在执行:$ git remote add origin [email protected]:defnngj/hello-world.git 就不会报错误了

 

2. 在执行

$ git push origin master

错误提示:error:failed to push som refs to.......

解决办法:

$ git pull origin master // 先把远程服务器github上面的文件拉下来,再push 上去

 

 

3 github连接出现Bad file number问题(摘自:http://rangercyh.blog.51cto.com/1444712/749490)

错误提示:     ssh:connect to host github.com port 22: Bad file number

 

自己写一个config配置文件(官网上帮助文档如是说),放到RSA相同目录下:

config:

Host github.com
User balfish
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
port 443

 

原因:

22端口是默认的ssh连接端口,不过貌似这个服务有很多弱点,所以系统默认不开放。那么换一个端口,443端口,它是用来支持https服务的,这个端口默认开放。

 

 

接下来运行ssh -T [email protected]

再选择yes后在rsa的路径下生成一个known_hosts的文件,打开看了就发现其实就是一个类似cookie的文件。当这个文件存在时以后就不用费劲的输入yes了,直接就连接上了。

 

 

 

在公司因为用了gitlab和github两个ssh key

配置github/gitlab 管理多个ssh key 参考下面这个

http://www.cnblogs.com/fanyong/p/3962455.html

你可能感兴趣的:(github)