Git-3 git远程仓库

1.8 和远程仓库的那些事

如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别。

远程仓库是 Git 的杀手级功能之一(注意是之一,也就是后面还有之二,之三……)。

生产环境中的实际情况往往是这样,找一台电脑充当 Git 服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

那现在是不是需要搭建一台 Git 服务器,来作为远程仓库呢?如何搭建 Git 服务器,稍后我们再谈。

目前互联网上已经存在了这样的网站,可以提供 Git 服务器,并且大部分情况下是免费的。

GitHub 网站你知道吧,这是一个神奇的网站,它就可以充当我们的远程仓库。

要想使用 GitHub 作为我们的远程仓库,只需要注册一个账号即可,当然这是免费的。

GitHub 虽然是免费的,但是指针对于你创建的公共仓库;什么是公共仓库?就是放在仓库里的代码互联网的任何用户都可看到,并且可以拉取等操作。要想创建私有仓库,需要花钱。

所以目前大部分公司使用另一个网址的服务 GitLab ,这个网站和 GitHub 唯一的区别是,可以为普通用户提供创建私有仓库,并且为这个私有仓库提供权限服务,免费。

所以我们接下来主要介绍 GitLab 的使用。

1.81 注册 gitlab 账号

网址 https://about.gitlab.com/

image.png

填写信息

image.png

见到下方图片内容后,就可以去邮箱进行确认了

image.png

邮箱确认

image.png

确认后,重新打开 GitLab 网站进行登录

image.png
1.8.2 创建一个仓库
image.png

创建一个私有仓库


image.png

填好注册的相关信息后点击绿色的 Create project 按钮进行创建

1.8.3 和远程仓库建立SSH 信任关系

由于 GitLab 和 GitHub 都是用 SSH 协议对你的本地Git仓库和GitHub仓库之间的传输进行加密传输的。

为什么需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送,所以,需要一点设置

我们这里选择是 SSH 的通信方式,所以执行相关操作前,需要先解决本地机器和远程仓库的服务器之间的 SSH 信任关系,需要让远程仓库的服务器信任我们本地的机器。

只需要把本地的公钥传给远程仓库的服务器即可。

  1. 首先在本地机器上创建自己的密钥对
[shark@git ~]$ ssh-keygen   # 一路敲回车键即可
  1. 复制自己的公钥内容

    用 vim 打开公钥文件,之后赋值文件的整个内容

[shark@git ~]$ vim ~/.ssh/id_rsa.pub
  1. 添加公钥

    在刚才的 GitLab 创建仓库的页面上,点击头像,再点击 Settings

image.png

在弹出的网页左侧边栏,点击 SSH Keys

image.png

把自己的公钥内容添加到远程仓库 GitLab 网站上

image.png
  1. 回到自己新建仓库的页面


    image.png
  1. 继续按照提示执行相关命令

设置本地仓库和 GitLab 仓库的通信方式为 SSH

image.png

在本地 Linux 机器上按照不同的情况执行如下命令

应该在每台需要给这个 GitLab 仓库建立联系的 Linux 机器上执行这些操作

image.png

我这里选择第一种,就是本地没有仓库,比如我要在我的家目录下建立仓库,做如下操作即可:

[shark@git ~]$ pwd
/home/shark
[shark@git ~]$ git config --global user.name "sharkyun"
[shark@git ~]$ git config --global user.email \
"[email protected]"
[shark@git ~]$ git clone \
[email protected]:sharkyun/my_project_one.git

克隆成功后,在当前目录下会有一个和你远程仓库同名的一个目录。

image.png

这个目录就是本地的仓库了。

  1. 测试本地仓库

接下来继续按照 GitLab 网站上的提示,在这个本地仓库里创建测试文件并提交到本地仓库,最后同步到远程仓库(即: GitLab)

[shark@git ~]$ cd my_project_one/
[shark@git my_project_one]$ touch README.md
[shark@git my_project_one]$ git add README.md
[shark@git my_project_one]$ git commit -m "add README"
[master(根提交) 5e2b547] add README
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
[shark@git my_project_one]$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 211 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:sharkyun/my_project_one.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
[shark@git my_project_one]$
  1. 验证远程仓库
image.png
1.8.4 总结
# 克隆一个远程仓库到本地
git clone [email protected]:sharkyun/my_project_one.git

# 推送本地仓库的内容到远程仓库, 只有在第一次是使用 -u 之后不必再用 -u 参数
git push -u origin master

# 以后再此同步使用如下命令即可 
git push origin master

# origin  默认的远程仓库名 
# master  本地仓库名

最后有彩蛋赠送 git 和 github 的合作

你可能感兴趣的:(Git-3 git远程仓库)