GitHub是为开发者提供Git仓库的托管服务。这是一个让开发者与朋友、同事、同学及陌生人共享代码的完美场所。

GitHub入门

什么是GitHub

GitHub是为开发者提供Git仓库的托管服务。这是一个让开发者与朋友、同事、同学及陌生人共享代码的完美场所。

GitHub与Git的区别

GitHub与Git是完全不同的两个东西。

在Git中,开发者将源代码存入名叫“Git仓库”的资料库中并加以使用。而GitHub则是在网络上提供Git仓库的一项服务。

也就是说,GitHub上公开的软件源代码全都由Git进行管理。理解Git,是熟练运用GitHub的关键所在。

如何使用GitHub(一)

创建账户

打开创建账户的页面https://github.com/join

在Username一栏中用英文和数字输入要创建的ID,您的公开页面的URL(例如:https://github.com/weirubo) 会用到这个ID。其它项目也请按照页面要求输入。

填写完所有的项目后点击Create an account,就能完成账户的创建。账户创建完后会直接进入登录状态,用户可以立即开始使用GitHub。登录状态下用户名会显示在页面的右上方。

设置头像

在GitHub上随处可见的头像是通过Gravatar服务显示的。使用过WordPress的读者可能对它有所了解。
只要使用创建GitHub账户时注册的邮箱在Gravatar上设置头像,GitHub的头像就会变成您设置的样子。

设置SSH Key

GitHub上连接已有仓库时的认证,是通过使用了SSH的公开密钥认证方式进行的。现在让我们来创建公开密钥认证所需的SSH Key,并将其添加至GitHub。

运行下面的命令创建SSH Key。

1
2
3
4
5
ssh-keygen -t rsa -C "your_email@example.com" 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):[按回车键] #如果需要创建多个ssh key并且已存在ssh key,需要起别名再按回车键(例如:id_rsa.work),否则会覆盖原来的ssh key
Enter passphrase (empty for no passphrase):[输入密码]
Enter same passphrase agin:[再次输入密码]

“your_email@example.com”的部分请修改成您在创建账户时使用的邮箱地址。密码需要在认证时输入,请选择复杂度高并且容易记忆的组合。

输入密码后会出现以下结果。

1
2
3
4
5
6
Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa. 
Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub
The key fingerprint is:
[fingerprint值] your_email@example.com
The key's randomart image is:
[略]

id_rsa文件是私有密钥,id_rsa.pub是公开密钥。

注意:如果创建多个ssh key,需要在.ssh下创建config文件,内容如下:

1
2
3
4
5
6
7
8
9
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

Host git.oschina.net
HostName git.oschina.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa.work

添加公开密钥

在GitHub中添加公开密钥,今后就可以用私有密钥进行认证了。

点击右上角头像下拉菜单中的账户设定按钮(Settings),选择SSH and GPG keys菜单,点击New SSH Key,会出现Title和Key两个输入框。在Title中输入适当的密钥名称。Key部分请粘贴id_rsa.pub 文件里的内容。id_rsa.pub的内容可以用如下方法查看。

1
2
cat ~/.ssh/id_rsa.pub 
ssh-rsa [公开密钥的内容] your_email@example.com

添加成功之后,创建账户时所用的邮箱会接到一封提示“公共密钥添加完成”的邮件。

完成以上设置后,就可以用手中的私人密钥与GitHub进行认证和通信了。

1
2
3
4
ssh -T git@github.com 
The authenticity of host 'github.com(192.30.252.120)' can't be established.
RSA key fingerprint is [fingerpring值].
Are you sure you want to continue connecting(yes/no)?[输入yes]

出现如下结果即为成功。

1
Hi your_username! You've successfully authenticated,but GitHub does not provide shell access.

如何使用GitHub(二)

创建仓库

实际创建一个公开的仓库。点击右上角工具栏中的“+”下拉菜单里的New repository,创建新的仓库。
在Repository name 栏中输入仓库的名称。

Description栏中可以设置仓库的说明。这一栏不是必须项,可以留空。

选择Public,创建公开仓库,仓库内的所有内容都会被公开。

选择Private,创建非公开仓库,用户可以设置访问权限,但这项服务是收费的。

在Initialize this repository with a README选项上打钩,随后GitHub会自动初始化仓库并设置README文件,让用户可以立刻clone这个仓库。如果想向GitHub添加手中已有的Git仓库,建议不要勾选,直接手动push。

下方左侧的下拉菜单Add .gitignore非常方便,通过它可以在初始化时自动生成.gitignore文件。这个设定会帮我们把不需要再Git仓库中进行版本管理的文件记录在.gitignore文件中,省去了每次根据框架进行设置的麻烦。下拉菜单中包含了主要的语言及框架,选择今后将要使用的即可。

下方右侧的下拉菜单Add a license可以选择要添加的许可协议文件。如果这个仓库中包含的代码已经确定了许可协议,那么请在这里进行选择。随后将自动生成包含许可协议内容的LICENSE文件,用来表明仓库内容的许可协议。

输入选择都完成后,点击Create repository按钮,完成仓库的创建。

clone已有仓库

1
2
git clone 仓库的路径
cd 目录名称

编写代码

1
vim test.php
1
2
3
<?php
echo "Hello World";
?>

查看状态

1
git status

提交

1
2
git add test.php
git commit -m "Add test.php"

通过git add命令将文件加入暂存区,再通过git commit命令提交。

添加成功后,可以通过git log命令查看提交日志。

1
git log

进行push

之后只要执行push,GitHub上的仓库就会被更新。

1
git push

这样一来代码就在GitHub上公开了。

常见问题

  1. Warning: Permanently added ‘github.com,192.30.252.120’ (RSA) to the list of know

    1
    2
    3
    4
    5
    6
    ssh -T git@github.com
    The authenticity of host 'github.com (192.30.252.120)' can't be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'github.com,192.30.252.120' (RSA) to the list of known hosts.
    Permission denied (publickey).

    解决方案:

    1
    2
    3
    4
    cd .ssh
    ls -la
    rm -rf id_rsa
    rm -rf id_rsa.pub

    重新设置SSH Key,并添加公开密钥。

  2. Warning: Permanently added the RSA host key for IP address ‘192.30.252.129’ to t

    Warning: Permanently added the RSA host key for IP address ‘192.30.252.129’ to the list of known hosts.
    解决方案:

    1
    sudo vim /etc/hosts

    添加如下代码:

    1
    192.30.252.129 github.com