一、准备工作

  1. 本地安装了Git,创建了本地仓库,并且项目已经提交(commit)到本地仓库。
  2. 注册了GitHub账号,并且在GitHub上创建了远程仓库,用于关联本地仓库。

二、SSH与HTTPS的不同

  • 使用HTTPS协议,可以随意克隆github上的项目,而不管是谁(适用于公开项目);使用SSH密钥则要求你必须是要克隆的项目的拥有者或者管理员,且需要先添加SSH KEY,否则无法克隆(适用于团队内部)。
  • 使用HTTPS在push(上传)的时候是需要验证用户名和密码的;而是用SSH在push(上传)的时候,是不需要输入用户名的。如果配置SSH KEY的时候设置了密码,则需要输入密码的,否则是不需要输入密码的。

三、在github上添加SSH KEY

1、检查你的电脑是否已经有SSH KEY。

查看Linux下~/.ssh,或Windows下C盘【C:\Users\用户名.ssh】,是否已经存在 id_rsa.pub 或 id_dsa.pub 文件。如果已经存在,可以跳过步骤2,直接进入步骤3.

2、创建一个SSH KEY

在Git Bash中执行命令:

ssh-keygen -t rsa -C "your_email@example.com"

参数含义:

注意ssh后没有空格

-t 制定密钥类型,默认是rsa,可以省略。

-C 设置注释文字,比如邮箱

-f 制定密钥文件存储文件名

以上代码省略了-f参数,因此,运行上面的命令后悔让你输入一个文件名,用于保存刚才生成的SSH KEY代码。如:

Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]

这里也可以不输入,则会在默认地址(推荐)下生成 id_rsa 和 id_rsa.pub 两个秘钥文件。

 接着又会提示输入两次密码(该密码是上传push文件的时候要输入的密码,而不是github账号管理者的密码),同样也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提到到github上了。如:

Enter passphrase (empty for no passphrase): 
# Enter same passphrase again:

完成后,窗口上会有如下代码提示:

Your identification has been saved in /c/Users/you/.ssh/id_rsa.
# Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

 如果你看到类似代码段,就说明SSH KEY已经成功创建了,接下来要做的就是把他添加到github的SSH KEY上。

3、添加你的SSH key到github上面去

a、拷贝id_rsa.pub 文件的内容

b、登陆你的github账号。从右上角的设置进入,然后点击菜单的SSH KEY进入页面添加SSH KEY。

c、点击Add SSH key按钮添加一个SSH key。把步骤a中复制的代码粘贴到key所对应的输入框中,记得SSH key代码的前后不要留有空格或者回车。当然当然,上面的 Title 所对应的输入框你也可以输入一个该 SSH key 显示在 github 上的一个别名。默认的会使用你的邮件名称。

4、测试一下SSH KEY

在Git Bash中输入以下代码:

$ ssh -T git@github.com

系统会有一段警告代码:

The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

这是正常的,输入Yes回车即可。如果你创建SSH key的时候设置了密码,接下来就会提示你输入密码,如:

Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':

当然如果密码输错了,会再要求你输入,直到对了为止。注意:输入密码时如果输错一个字就会不正确,使用删除键是无法更正的。密码输入正确后会看到下面的话:

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

gi如果用户名是正确的,你已经成功设置SSH密钥。如果看到 “access denied”,则表示拒绝访问,那么你就需要使用https去访问,而不是SSH。

四、HTTPS上传下载演示

1、在Github上创建远程仓库ssm,仓库的HTTPS:https://github.com/your_account/ssm.git

2、将本地项目上传到本地Git. (git add . 可以把目录下所有文件都添加)注意这里是本地仓库中的项目,而不是本地文件夹中的项目。项目要经过git init。

3、在本地项目目录下执行git remote add命令,将本地仓库与远程仓库关联。

git remote add origin https://github.com/your_account/ssm.git

 4、把本地库的所有内容推送到远程库上:

$ git push -u origin master

Github会自动弹出输入用户名和密码的界面 

本地项目如何和gitlab上的项目关联_github

如果信息验证无误,Git会自动开始上传过程:

本地项目如何和gitlab上的项目关联_github_02

到Github中查看,发现项目已经全部上传上去了。以后项目内容有了更改,只要到项目目录下push一下就可以了。

五、SSH上传下载演示

1、在Github上创建远程仓库Algs4,仓库的HTTPS:git@github.com:your_account/Algs4.git

2、将本地项目上传到本地Git. 

3、确保SSH KEY已经按上述步骤安装完成的情况下,在本地项目目录下执行git remote add命令,将本地仓库与远程仓库关联。

git remote add origin git@github.com:your_account/Algs4.git

 4、把本地库的所有内容推送到远程库上:

$ git push -u origin master

如果SSH KEY中设置了密码,则这里会要求输入密码。如果没有则直接开始上传:

本地项目如何和gitlab上的项目关联_github_03

同样到Github中查看,发现项目已经全部上传上去了。以后项目内容有了更改,只要到项目目录下push一下就可以了。