git 连接 github 远程仓库

时间:2019-11-11
本文章向大家介绍git 连接 github 远程仓库,主要包括git 连接 github 远程仓库使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

0. 前言


github 设置添加 SSH

很多朋友在用 github 管理项目的时候,都是直接使用 https url 克隆到本地,当然也有些人使用 SSH url 克隆到本地。然而,为什么绝大多数人会使用 https url 克隆呢?
这是因为,使用 https url 克隆对初学者来说会比较方便,复制 https url 然后到 git Bash 里面直接用 clone 命令克隆到本地就好了。而使用 SSH url 克隆却需要在克隆之前先配置和添加好 SSH key 。
因此,如果你想要使用 SSH url 克隆的话,你必须是这个项目的拥有者。否则你是无法添加 SSH key 的。

https 和 SSH 的区别:

  1. 前者可以随意克隆 github 上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
  2. https url 在 push 的时候是需要验证用户名和密码的;而 SSH 在 push 的时候,是不需要输入用户名的,如果配置 SSH key 的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。

1. 在 github 上添加 SSH key 的步骤:


1. 首先需要检查你电脑是否已经有 SSH key

运行 git Bash 客户端,输入如下代码:

1
2
$ cd ~/.ssh
$ ls

这两个命令就是检查是否已经存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在,那么你可以跳过步骤 2,直接进入步骤 3。

2. 创建一个 SSH key

$ ssh-keygen -t rsa -C "your_email@example.com"
代码参数含义:

-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]

当然,你也可以按 enter 不输入文件名,使用默认文件名(推荐),那么就会生成 id_rsa 和 id_rsa.pub 两个秘钥文件。

接着又会提示你输入两次密码(该密码是你 push 文件的时候要输入的密码,而不是 github 管理者的密码),

当然,你也可以不输入密码,直接按回车。那么 push 的时候就不需要输入密码,直接提交到 github 上了,如:

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

接下来,就会显示如下代码提示,如:

1
2
3
4
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 上面去

  1. 首先你需要拷贝 id_rsa.pub 文件的内容,你可以用编辑器打开文件复制,也可以用 git 命令复制该文件的内容,如:

$ clip < ~/.ssh/id_rsa.pub

  1. 登录你的 github 账号,从又上角的设置( Account Settings )进入,然后点击菜单栏的 SSH key 进入页面添加 SSH key。

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

4. 测试一下该 SSH key

在 git Bash 中输入以下代码

$ ssh -T git@github.com

当你输入以上代码时,会有一段警告代码,如:

1
2
3
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':

当然如果你密码输错了,会再要求你输入,知道对了为止。

注意:输入密码时如果输错一个字就会不正确,使用删除键是无法更正的。

密码正确后你会看到下面这段话,如:

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

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

2. 远程仓库操作


1. 本地仓库推送到远程仓库

现在的情景是:我们已经在本地创建了一个 Git 仓库后,又想在 github 创建一个 Git 仓库,并且希望这两个仓库进行远程同步,这样 github 的仓库可以作为备份,又可以其他人通过该仓库来协作。

首先,登录 github 上,然后在右上角找到 “create a new repo” 创建一个新的仓库。
在 Repository name 填入 testgit,其他保持默认设置,点击 “Create repository” 按钮,就成功地创建了一个新的 Git 仓库:

目前,在 GitHub 上的这个 testgit 仓库还是空的,GitHub 告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到 GitHub 仓库。
现在,我们根据 GitHub 的提示,在本地的 testgit 仓库下运行命令:
$ git remote add origin https://github.com/username/testgit.git
把本地库的内容推送到远程,使用命令:
$ git push -u origin master
如果本地仓库没有过 commit, 那么此时就会报错:

1
2
3
$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'git@github.com:username/testgit.git'

原因:
本地仓库为空
解决方法:

  1. 使用命令 git add 添加文件。
  2. 使用命令 git commit 提交修改。

git push 命令实际上是把当前分支 master 推送到远程。由于远程库是空的,我们第一次推送 master 分支时,加上了 –u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在 github 页面中看到远程库的内容已经和本地一模一样了。
从现在起,只要本地作了提交,就可以通过如下命令:
$ git push origin master
把本地 master 分支的最新修改推送到 github 上了,现在你就拥有了真正的分布式版本库了。

2. 远程仓库克隆到本地仓库

上面我们了解了先有本地库,后有远程库时候,如何关联远程库。
现在我们想,假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?
首先,登录 github,创建一个新的仓库,名字叫 testgit2. 如下:

现在,远程库已经准备好了,下一步是使用命令 git clone 克隆一个本地库了。如下所示:
$ git clone git@github.com:username/testgit2.git
接着在我本地目录下 生成 testgit2 目录了,如下所示:

接下来在本地上对 testgit2 的修改就可以通过命令 git push 推送到远程仓库。

原文地址:https://www.cnblogs.com/esllovesn/p/11834115.html