git搭建远程仓库

前言:我们现在搭建远程仓库,常见的,是去github、gitlab、gitee等这类第三方平台网站上进行部署。咱就顺道说说这三个的区别。

github 是面向全世界的,由国外开发的,基本上放在上面都是开源的,私人仓库好像是要收费的;

gitlab 同github一样,但是他的私人仓库是免费了,基于github还增加了许多新特性;还有一点是,他支持部署在自己的服务器上;

gitee 是国内开发的,也是支持开源仓库和私有仓库,和github一样,是需要部署在这个平台上的。

gitee相信大家使用的会比较多,因为是国内开发的,访问效率是会比github快的,但因为他也是需要部署在第三方平台上,就等于是,我们的项目代码,这些资源都存到别人哪里去了,有时候考虑到安全性、隐私性,所以gitlab的优势就出来了。因为gitlab是可以部署在我们自己的服务器上。可以理解为,我们使用的依然是git,不过安装了gitlab官网的软件,我们可以在自己的服务器上视图化来进行管理,就跟"宝塔"是一样的。

但是!!!

咱们今天不讲gitlab,而是纯git来部署远程仓库。

场景:

假设,我们开发一个项目,我们一般都是在本地敲代码的,完成后再push上去,那么push的远程仓库,就需要搭建了。再假设,我们不使用上面的三个,而是纯git来部署。

解释:为什么不使用上面三个,而是纯git来部署呢。因为我们不想托管在第三方平台,而是在自己服务器上部署,这样资源就不会泄露出去。

我们搭建远程仓库,因为使用的是linux操作系统,所以需要了解并会一些Linux的命令,因为本次流程会涉及。

来啦来啦,正题来啦!

服务器是linux,服务器是linux,服务器是linux,三遍 三遍 三遍!!!

linux版本信息:

LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID:    CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:    7.9.2009
Codename:    Core

git版本信息:

git version 2.38.1

1. 创建git账号

        1) 使用 useradd 命令创建一个账号

useradd git 

如果什么都没提示,那就是创建成功。如果该账号此前已经创建过,那么可能会提示:

                (1) useradd: warning: the home directory already exists. 主目录已存在
                (2) Not copying any file from skel directory into it. 没有复制
                (3) Creating mailbox file: File exists 邮箱文件已存在

如果这个账号以前创建过,并且删除过,提示这些也就没关系,也是正常创建账号,只是会提示此前已经有过该账号的信息。

        2) 使用 cat /etc/passwd 就能看见新创建的账号

cat /etc/passwd

会显示出所有的账号信息,我们是刚创建新的账号,所以会在最后一行看见。

2. 配置SSH

备注:这里的配置很重要,请不要随意删除文件修改内容等

        1) 输入命令进入 ssh文件

#进入ssh文件夹
cd /etc/ssh/

#显示所有文件/文件夹
ls

        2) 在这里我们能看见一个"sshd_config"文件,使用vim 将其打开并编辑

vim sshd_config

修改配置

StrictModes no  #由yes改为no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys #这里要取消注释

我的服务器修改前,记得是:

         StrictModes 默认为 yes,默认情况下是注释掉了的,我们将其释放并改为no

        RSAAuthentication 是没有的,需要我们直接添加

        PubkeyAuthentication 默认是 yes 不过是注释了的,需要释放

        AuthorizedKeysFile 默认有可能注释了,需要释放

3. 重启SSH

第二步配置做完后,需要重启SSH配置才能生效

注意呀!一定要检查好修改的配置内容,检查好 检查好 检查好!

重启SSH命令:

service sshd status 查看状态
service sshd restart 重启服务

status 查看状态,看到 Active: active (running)  这类时,代表正在运行中。

restart 重启服务,看到 Redirecting to /bin/systemctl restart sshd.service  就代表重启成功。

然后再 status 看一下状态,可以看到 Active: active (running) 后面会跟一个重新运行的时间,是当前的时间就是OK的,代表重启成功。

4. AuthorizedKeysFile 中的 .ssh/authorized_keys

从第二步修改配置时,最后有一个 AuthorizedKeysFile,这个是"授权密钥文件",配置文件中能看到,它是放在 ".ssh/authorized_keys" 这个文件里的。

这里要注意了,我们使用的当前账号,一般情况下,都是root,所以这个文件的路径在:root/.ssh/authorized_keys

但是我们是创建了一个git账号来玩的,所以就不能在root的路径里,而是要去找到 git账号的路径。

返回到根目录,我们查看,使用 "ls"命令查看

cd /  返回根目录
ls  查看当前位置下的目录

 我们就能看到,有一个 "home" 文件夹,进入 home ,再使用 ls,能看到我们之前创建的 git 账号文件夹。

这个 git 文件夹下,基本上是空目录,"其实使用 ls -al 命令还能看到一些隐藏文件,但我们并不需要"

返回到上面说的,AuthorizedKeysFile 文件,它指向的是文件是放在 ".ssh/authorized_keys", 所以我们需要在 git 文件夹里,创建 ".ssh"文件夹,然后在 ".ssh"文件夹里再创建 "authorized_keys" 文件

先用 pwd 看一下我们目前所处的位置:

pwd

使用 mkdir 创建 ".ssh"文件

再使用 ls -al 查看

mkdir .ssh 创建目录

ls -al 查看

git搭建远程仓库_第1张图片

 进入 ".ssh"目录

cd .ssh 进入目录

pwd 查看当前位置

创建文件 "authorized_keys"

touch authorized_keys 创建文件

ls 查看

文件创建好了之后,我们可以先消停一下了,先喝口水。。。

5. 文件权限 

回到git目录下,我们能看到,.ssh 这个目录是root创建的,权限也是root的

git搭建远程仓库_第2张图片

但它应该是git账号的,所以我们需要把它指定给git,".ssh"目录的权限得是700,并且需要指定给git用户,命令:

chown -R git:git .ssh 指定给git
chmod -R 700 .ssh 修改目录权限

git搭建远程仓库_第3张图片

修改后,就能看到,目录权限和用户跟之前是不同的。

修改了".ssh"目录之后,"authorized_keys"文件也需要修改,它是600的权限

cd .ssh  进入目录
ls -al 查看

git搭建远程仓库_第4张图片

能看到,用户已经是git了,并且权限也是700,因为我们上面使用 chown -R,chmod -R,这里的"-R" 代表当前目录及下面的所有子目录文件全都修改。

权限是700,需要修改为600:

chmod 600 authorized_keys 修改文件权限

ls -al 查看

权限和之前的就不同了,成功。

6. 搭建远程仓库(裸仓库)

假设我们在这个目录下搭建远程仓库

 先创建一个 git 目录,主要是做好一个分类。

mkdir git 创建目录

ls 查看

然后我们进入 git 目录

cd git 进入目录

 开始搭建一个远程仓库,也叫"裸仓库"

git init --bare project.git

git搭建远程仓库_第5张图片

 这样也就搭建好了一个远程仓库,可以进入这个目录看一下

cd project.git

ls 

这个远程仓库也就是"裸仓库",它不能进行 push 和 pull,可以理解为一个不能操作的"仓库",它只进行存储,不进行其他的操作。

比如,lucky同学和baby同学,lucky今天更新了代码,push上去了,就会进入到这个仓库,baby同学就可以进行pull 获取到这些内容,而baby同学push上去后,lucky同学也能pull。

如果这个时候,我们的项目,还有开发环境、测试环境、生产环境,这三个环境,也只是pull 就可以了,它们pull的数据,其实也是从这个"裸仓库"中拿到的。

到这里其实也就差不多完了。。。 但是还有一点,权限呀~~~

 这里我们能看到,因为是root账号创建的,所以它的权限是给的root,而我们是用的git账号,所以要将这个目录的权限给到git

chown -R git:git project.git

7. 服务器上clone仓库

好了,我们的远程仓库搭建好了,那么我们现在就需要 git clone ,将这个远程仓库进行关联。

因为我们这个仓库,是部署在我们服务器上的,如果我们的项目,也在这台服务器上,那么就比较简单了。

先回到"wwwroot"目录,跟 git 目录同级的

然后直接来一手 "git clone" 让它防不胜防

git clone /www/wwwroot/git/project.git 克隆

git搭建远程仓库_第6张图片

 就能看到,clone 成功,也出现了该目录,我们进入 project 目录看一下

 因为是一个空的仓库,所以我们需要进行一次操作:

touch README.md 创建文件

git add . 提交到缓存区

git commit -m "first commit" 提交到本地库

如果在 commit 时,发生以下错误,是因为我们git还没有设置 用户、邮箱

git搭建远程仓库_第7张图片

 那我们就需要设置以下 git的用户邮箱了:

git config --global user.email "[email protected]" 邮箱
git config --global user.name "Your Name" 用户
git config -l 查看

 然后我们再进行 commit 试一下呢

git commit -m "first commit"

 好的,成功了!!!

不过这里也只是本地库,所以我们需要补充,提交到远程仓库里,使用下面的命令:

git push origin  提交到远程

git branch -a 查看本地分支、远程分支

git搭建远程仓库_第8张图片

好了 大功告成!!!!!

等等喔,上面只是说服务器上的部署好了,那我们本地的呢???

8. 本地clone远程仓库

其实我们本地跟上面的步骤是一样的,唯独要注意两点

1). 因为不是同一个环境下,所以我们想 clone 这个远程仓库,需要提交我们本地的 ssh 公钥。一般存放在C盘/用户/.ssh 

2). git clone 时,就不能直接像上面那样 "/www/wwwroot",因为不是同一个环境下,所以我们需要指定服务器的IP,或者域名

先来处理第一点

我这边是Windows11系统,所以就拿Windows10 / Windows11 举例,在 "C:\Users\我的\.ssh" 下找到 "id_rsa.pub",打开文件,里面的内容进行复制 (如果本地没有ssh,要么是没有找到,要么是没有生成,需要去了解下生成ssh)

然后我们回到部署的远程仓库服务器里,找到这个文件

 

 使用 vim 进行编辑,将我们复制的公钥放进去

vim authorized_keys  编辑文件

这里我没有附图说明具体操作,因为是隐私操作。其实也就是将Windows中我们的ssh公钥 放进去,保存好就行。

接着第二点

在本地时,我们打开 "git Bash here" 或者 cmd 终端,输入:

git clone [email protected]:/www/wwwroot/git/project.git

git搭建远程仓库_第9张图片

"127.0.0.1" 请将这个替换成我们的服务器IP或者域名。

拉取成功

git搭建远程仓库_第10张图片

可以看到,在linux服务器上 commit 过的记录,这边也有。

撒花~

你可能感兴趣的:(git,linux,git,github,gitee,gitlab,linux)