Git远程仓库管理:SSH公钥上传、添加远程库及克隆操作详解
Git远程仓库管理:SSH公钥上传、添加远程库及克隆操作详解
Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。本文将详细介绍如何使用 Git 进行远程仓库的管理,包括 SSH 公钥上传、添加远程库以及从远程库克隆等操作。
一、远程库GitHub SSH公钥上传
Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。在一个项目开发的最初阶段,只有一台电脑上有一个原始版本库。此后,别的电脑可以“克隆”这个原始版本库。
GitHub 就是这样的一个远程仓库,为我们提供免费的 Git 仓库托管服务。本地仓库和 GitHub 仓库之间的传输是通过 SSH 加密的。在申请注册 GitHub 账户后,需要进一步进行 SSH 相关的设置,才能方便地拉取和推送。
第1步:创建SSH Key
在用户主目录下,看看有没有 .ssh
目录,键盘输入 ctrl+H
就可以显示隐藏文件和隐藏文件夹。如果有,再看看这个目录下有没有 id_rsa
和 id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。
如果没有,则需要打开命令行窗口输入如下指令,创建 SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
将上述邮箱换成 GitHub 注册时使用的邮箱,然后回车使用默认值即可创建 SSH Key。
上述指令完成后,主目录里将会出现名为 .ssh
的隐藏目录。该目录下有 id_rsa
和 id_rsa.pub
两个文件,这两个就是 SSH Key 的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,需要拷贝其内容到 GitHub。
第2步:登录GitHub,进入Settings -> SSH and GPG keys
选择 New SSH key
将主文件目录下的 .ssh
文件夹中,id_rsa.pub
这个文件中的内容拷贝到网页中 Key 的位置。
添加自己的标题,然后确认 Add SSH key 即可完成 SSH 密钥对的公钥上传。只有当 GitHub 知道了我们的 SSH 公钥,才能确认是本人的上传。当我们有多台电脑时,只需要将每台电脑的 Key 都添加到 GitHub,就可以在每台电脑上往 GitHub 推送了。
二、添加远程库
现在的情况是,我们已经在本地创建了一个 Git 仓库后,又想在 GitHub 创建一个 Git 仓库,并且让这两个仓库进行远程同步,这样,GitHub 上的仓库既可以作为备份,也可以让其他人通过该仓库来协作。
首先,登录 GitHub,在右上角找到“Create a new repo”按钮,点击创建新的仓库:
输入想要创建的仓库名字 git_study
,其它的保持默认,然后点击 Create repository 就可以创建公开的代码仓库。如果不想让别人看到可以选择 Private,创建私有仓库。
Git 仓库建立完成后,将会出现以下界面:
目前,在 GitHub 上这个 git_study
仓库还是空的。我们可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到 GitHub 仓库。
那么如何将本地仓库与远程仓库关联,需要按照 GitHub 的提示,在本地的 git_study
仓库下,使用如下指令:
git remote add origin git@github.com:Yangbit666/git_study.git
添加后,远程库的名字就是 origin
,这是 Git 默认的叫法,也可以改成别的,但是 origin
这个名字是远程库的常规叫法。
下一步,就可以将本地库所有的内容都推送到远程库上:
git push -u origin master
使用 git push
就可以将本地的 master 分支推送到远程 origin 仓库。其中 -u
是因为这是第一次 push,我们不但需要将本地的 master 分支内容推送到远程新的 master 分支,还需要把本地的 master 分支和远程的 master 分支关联起来。
在之后对 readme 的更改,可以只输入如下指令来推送到远程仓库:
git push origin master
三、从远程库克隆
对于上述场景,我们是先有了本地库,再创建远程库,然后通过 remote add 进行关联。一般来说,如果我们从零开发,最好的方式是先创建远程库,然后从远程库克隆。
第一步
登陆 GitHub,创建一个新的仓库,名为 git_skills
:
现在,远程库已经准备好了,下一步是用命令 git clone
将远程库克隆到本地:
git clone git@github.com:Yangbit666/git_skills.git
注意 GitHub 提供了两种克隆方式,https 和 ssh。通常使用 ssh 会更快,但是对于只开放了 https 端口的公司,只能使用 https 的传输方式。
这样我们就实现了远程仓库克隆到本地的操作。
我们在 git_skills
下添加一个测试文件 readme.md
来模拟我们对于远程仓库的改动。
当我们想要使用:
git push -u origin master
时会发现如下错误:
错误提示无法推送,再来看我们之前的 git_study
仓库,发现它就可以正常推送。这两个仓库的区别在于先前的 git_study
仓库是从本地关联到远程仓库的,也就是先有本地,后有远程。
但是我们后来的 git_skills
仓库是先有远程,后有本地。
这两个仓库所在的默认分支不同:
可以看到 git_skills
仓库所在的分支是从远程仓库克隆来的 main 分支,而 git_study
则是从本地创建的 master 默认分支。所以对于 git_skills
输入:git push origin master
会发现,本地没有 master 分支。而当我们输入:
git push origin main
就会发现,可以将本地的 main 分支,上传到 origin 远程仓库。