Git 是分布式版本控制系统,若将一个 Git 仓库分布到不同的机器上,那么这样的仓库我们把它称为是 远程仓库。当然我们完全可以自己搭建一台远行 Git 的服务器来充当这个 远程仓库,也可以使用目前比较流行的 GitHub(GitHub 是专门提供 Git 仓库的托管服务平台),本篇就以使用 GitHub 为例讲解如何 “克隆” 远程仓库。
一、配置 SSH
1、注册 GitHub
首先我们必须要从 GitHub 官网 上注册一个 GitHub 账号,这样才能免费获得 Git 远程仓库。
注册方式十分的简单,只需要输入用户名、电子邮箱、密码即可完成注册;如果您已经注册过,也可以直接登录。
2、创建 SSH Key(在 Windows 上)
由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 协议加密的,所以必须先在本地创建 SSH Key。
我们先在 “用户主目录” 下,查看是否有 .ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳过这一步,因为你已经创建好 SSH Key 了;如果没有,则打开 Git Bash(安装 Git 时,会在开始菜单中创建 Git Bash 快捷方式):
在 Git Bash 中输入生成 SSH Key 的命令:ssh-keygen -t 算法 -C "电子邮箱"
然后一路回车,使用默认即可。除非是有关军事的项目,否则一般不会设置密码。
如果一切顺利的话,可以在用户主目录里找到 .ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件,这两个文件就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。
ssh-keygen -t rsa -C "XXX@qq.com"
-t rsa:表示使用的是 RSA 加密算法;
-C "...":表示注释,一般注释内容是自己的电子邮箱,推荐写配置 Git 时的电子邮箱。
3、GitHub 中添加 SSH Key
登录 GitHub 账号,点击右上角的头像,选择 “Settings”,在左侧菜单栏选择 “SSH and GPG keys” 选项,点击 “New SSH key” 来添加新的 SSH Key:
进入 “SSH keys / Add new” 页面,Title 可任意写,Key 文本框里粘贴 id_rsa.pub 文件的内容:
点击 “Add SSH Key” 按钮,你就应该看到已经添加的 Key:
GitHub 需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而 Git 支持 SSH 协议,所以 GitHub 只要知道公钥,就可以确认只有你自己才能推送。
GitHub 允许添加多个 Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的 Key 都添加到 GitHub 中,就可以在每台电脑上往 GitHub 仓库推送了。
注意: 在 GitHub 上免费托管的 Git 仓库,任何人都可以看到(但只有你自己才能改)。
如果你不想让别人看到 Git 库,可以将 GitHub 的公开仓库变成私有的,这样别人就看不见了。另一个办法是自己动手,搭一个 Git 服务器,因为是自己的 Git 服务器,所以别人也是看不见的。这个方法在后续博客中会有讲解,这也是公司内部开发所必备的。
二、添加远程库
1、在 GitHub 上创建仓库
如果你想用本地的 Git 库 连接 GitHub 上的远程库,并且让这两个仓库远程同步(也就是将本地的 Git 库中的内容放到 GitHub 远程库上),那么你需要先在 GitHub 上新建一个仓库:
在 Repository name 框中填写仓库名(仓库名自定义即可,我这里叫 MyGitHub),其他保持默认设置,点击 Create repository 按钮,就成功地创建了一个新的 GitHub 仓库:
创建好的 GitHub 仓库还是空的,它会提示可以将这个仓库克隆出一个新的仓库,也可以将已有的本地仓库与之关联,然后把本地仓库的内容推送到 GitHub 仓库中(推送也就是上传到 GitHub 仓库)。
##2、关联远程仓库
我们在本地仓库中输入 关联远程仓库命令 :
git remote add 远程仓库名 git@服务器:路径/仓库名.git
添加后,就可以将本库创建的所有内容推送到远程库上了,
使用推送命令: git push -u 远程仓库名 分支名
以上就是将 master 分支推送到了指定的远程仓库中,使用 -u 参数 Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,以后推送就可以简化直接使用: git push origin master 命令推送即可。
把本地仓库的内容推送到远程仓库中,用 git push 命令,实际上是把当前分支 master 推送到远程。
注意: 当你第一次使用 Git 的 clone 或 push 命令连接 GitHub 仓库时,会有一个警告:
这是因为 Git 在使用 SSH 协议连接时,第一次需要验证 GitHub 服务器的 Key,需要你确认 GitHub 的 Key 的指纹信息是不是真的来自 GitHub 服务器,你直接输入 yes 回车即可。
这时候 Git 会输出一个警告,告诉你已经把 GitHub 的 Key 添加到本机的一个信任列表里了:
这个警告只会出现一次,后面的操作就不会出现了。
如果你想验证是否真的来自你的 GitHub 服务器,在你输入 yes 之前,可以比对 GitHub的RSA Key的指纹信息 是否与 SSH 连接给出的一致。
推送成功后,可以立刻在 GitHub 页面中看到远程仓库的内容已经和本地仓库一样了:
现在,你就拥有了真正的 分布式版本库 !
3、常用的关联命令
URL(如:git@github.com:GitHub账户/仓库名.git)
查看远程库信息
git remote
1
添加远程仓库: git remote add 远程端名 URL
git remote add origin git@github.com:sun8112133/MyGitHub.git
1
查询远程仓库列表: git remote -v
git remote -v
1
删除远程仓库: git remote remove 远程端名
git remote remove origin
1
修改远程仓库: git remote set-url 远程端名 新的URL
git remote set-url origin git@github.com:sun8112133/MyGit.git
1
三、从远程库克隆
添加远程仓库 是先有 本地仓库,再有 远程仓库 的情况。那么我们一般团队开发项目都是先有 远程仓库,才有 本地仓库 的,这时候就需要从 远程仓库 中克隆到 本地仓库。
1、在 GitHub 上准备一个有内容的仓库
首先登录 GitHub,创建一个新的仓库(我这里叫 MyGitHubClone):
这时要勾选住 Initialize this repository with a README 选项,让 GitHub 自动生成一个 README.md 文件,创建成功后,可以从 GitHub 仓库中看到 README.md 文件:
2、克隆远程仓库
GitHub 远程仓库准备好后,在本地选择一个盘符位置(如:E盘),使用 克隆仓库命令: git clone git@服务器:路径/仓库名.git
克隆成功后,进入本地仓库,你就会发现已经有了 README.md 文件了:
这样就成功克隆了一份,以后我们修改了直接使用 推送命令 到远程仓库即可!