git搭建远程仓库

news2024/10/6 6:39:59

前言:我们现在搭建远程仓库,常见的,是去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 查看

 进入 ".ssh"目录

cd .ssh 进入目录

pwd 查看当前位置

创建文件 "authorized_keys"

touch authorized_keys 创建文件

ls 查看

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

5. 文件权限 

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

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

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

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

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

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

能看到,用户已经是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

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

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 克隆

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

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

touch README.md 创建文件

git add . 提交到缓存区

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

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

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

git config --global user.email "you@example.com" 邮箱
git config --global user.name "Your Name" 用户
git config -l 查看

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

git commit -m "first commit"

 好的,成功了!!!

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

git push origin  提交到远程

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

好了 大功告成!!!!!

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

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 git@127.0.0.1:/www/wwwroot/git/project.git

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

拉取成功

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

撒花~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

助力工业物联网,工业大数据之脚本开发【五】

01:脚本开发思路目标:实现自动化脚本开发的设计思路分析路径step1:脚本目标step2:实现流程step3:脚本选型step4:单个测试实施创建一个文件,存放要采集的表的名称#创建测试目录 mkdir -p /opt/da…

【苹果推iMessage】软件安装UIAPplicationSharedApplicationiMessage

推荐内容IMESSGAE相关 作者✈️IMEAX推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容3.日历推 *** …

CANoe-Macro Recorder(宏模块)

1、引子 初接触宏模块时,我还记得当时我主要的测试内容是RVC/OPS(倒车影像/雷达)和Climate(空调)。当时的测试手法是通过CANoe上的面板,模拟RVC/OPS/Climate ECU发送CAN总线消息给IVI(中控,娱乐音响系统),实现RVC/OPS/Climate功能在IVI上的显示与控制 例如模拟激活…

webpack DefinePlugin解析

DefinePlugin是webpack的一个官方内置插件,它允许在 编译时 将你代码中的变量替换为其他值或表达式。这在需要根据开发模式与生产模式进行不同的操作时,非常有用。例如,如果想在开发构建中进行日志记录,而不在生产构建中进行&…

1603_MIT 6.828 “El Torito” Bootable CD-ROM Format Specification阅读

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 最近正好趁着假期看了下MIT的OS课程,这是里面推荐阅读的一份资料。简单看了一下,整理一下自己的阅读笔记。 只要是涉及到有历史的计算机技术…

一文带你深刻的进入python,并且了解python的优缺点

嗯,你好,感谢您能打开我的文章,在这里我有一个好消息来告诉大家呢,那就是:还有350多天就要过年啦,哈哈哈哈,开不开心,兴不兴奋 名字:阿玥的小东东 学习:pytho…

零代码应用搭建规范建议

文/顿唯 况育军 贺书钿 编辑/杜逸敏 在明道云零代码开发平台里,一个完整的业务应用包含了工作表、视图、角色、自定义页面、工作流五大核心模块(统计和外部门户为可选模块功能),基于这些能力模块组件,我们能呈现给用…

飞桨时序建模库PaddleTS及产业应用实践

时间序列: 一种普遍存在的数据形态 众所周知,时间序列是一种普遍存在的数据形态,与我们的日常生活及生产活动密切相关。如:股票指数、原油价格等金融市场数据;温度、湿度等天气数据;振动、转速等工业设备运…

【技术短文】汽车软件质量改善

一、根因分析 根据汽车软件脆弱性主要因素分析,共有10余种因素会导致软件质量问题: 1.项目时间点压力,占比 71%2.缺乏安全编程理解/培训,占比 60%3.偶然编程错误,占比 55%4.缺乏质量…

Tarjan算法的应用---缩点与割点

图论中有时候会涉及到一些连通性问题,主要是针对于点来说,在有向图中有时候需要计算强连通分量,这时候代表分量的的点就非常重要;在无向图中有时候会需要知道割点,用到的算法都是Tarjan,这个算法还是有难理…

了解多线程与并发

文章目录前言继承Thread类实现Runnable接口实现Callable和Future接口线程生命周期线程优先级线程加入操作线程休眠操作中断线程线程安全问题线程同步机制1. 同步代码块2. 同步方法线程暂停与恢复知识拓展死锁前言 📋前言📋 💝博客&#xff1a…

用Devc++与easyx一步一步做游戏[启动界面部分]-之按钮制作

前面我们介绍了如何为dev c配置好easyx,至于用easyx能够做一些什么呢?大用处我不敢说,用来学习了解消息机制还是不错的。这我们来实现一个简单的游戏启动界面的设计,主要是按钮的设计。总体设计好的效果如下: GIF截图…

(免费分享)springboot音乐网站

开发工具:eclipse,数据库mysql5.7 jdk1.8技术:springbootmybatis/** * * * */package com.bjpowernode.music.ss.service.impl;import javax.annotation.Resource;import com.bjpowernode.music.common.AbstractService; import com.bjpowe…

基于 ROS 机器人和 RTAB-MAP 算法实现室内三维重建

本文叙如何利用RTAB-Map算法和Turtlebot3机器人在自己构建的室内场景中建图 文章目录1、安装依赖2、创建工作空间3、安装rtabmap和rtabmap_ros4、建立gazebo场景功能包5、建立机器人功能包6、为机器人添加kinect相机参考7、编译工作空间8、建立环境地图9、建图1、安装依赖 必要…

数据结构第五周 :(进制转换问题 + 迷宫自动行走问题 + 杨辉三角形 + 队列元素逆置 + 银行排队 + 整数划分问题 + 卡特兰数)

目录进制转换问题迷宫自动行走问题杨辉三角形队列元素逆置银行排队——队列整数划分问题买票问题——卡特兰数小兔的棋盘——卡特兰数进制转换问题 【问题描述】根据课堂讲授,请用“顺序栈”解决进制转换问题,不采用顺序栈,不给分。 【输入形…

前端屏幕录制工具 + 录制<video>标签内容

一、录制的实现思路 1.开始录制、停止录制、下载视频 2.Blob介绍 3.概念 var mediaRecord //用于录制视频 var mediaStream //视频流 var videoBuffer [] //保存的视频数据二、屏幕录制工具 下载地址: https://chrome.google.com/webstore/detail/tampermonkey…

Linux- 系统随你玩之--文本处理三剑客--grep继任者awk

文章目录1、sed概述1.1、 与vim等编辑器的区别:1.2、sed工作原理1.3 、sed数据处理原理1.4 、正则表达式概念2、 sed语法和常用选项2.1、语法:2.2、sed常用内部命令2.3、参数:3、 sed 正则表达式(定位)3.1 、数字定址…

管理机密(RH294)

在ansible中有一个命令行工具ansible-vault可用于创建 编辑 加密 解密 查看文件举个栗子ansible-vaultcreate filenameNew Vault password: #输入密码Confirm New Vault password: #确认密码也可以使用别的方法 比如创建一个密码文件ansible-vaultcreate…

互联网开发必读Git工具利器-《30天精通Git版本控管》中文版免费分享

本书介绍在软体开发领域,对原始码进行版本控管是非常重要的一件事,有别于Subversion或TFS这类集中式版本控管系统,Git是一套分散式版本控管系统,并带来许多版本控管上的各种优势与解决传统集中式版本控管的缺失,例如支…

Spring Cloud_Hystrix断路器

目录一、概述1.分布式系统面临的问题2.是什么3.能干嘛4.官网资料5.Hystrix官宣,停更进维二、Hystrix重要概念1.服务降级Fallback2.服务熔断Breaker3.服务限流Flowlimit三、hystrix案例1.构建2.高并发测试3.故障现象和导致原因4.上诉结论5.如何解决?解决的…