搭建自己的Git服务器

环境

服务端:Ubuntu 22.04

客户端:Win11_x64

前提条件:需要确保在Windows机器上能够ping通Ubuntu服务器, 并且服务端与客户端均已安装了Git软件

服务端上的配置操作

以Ubuntu服务器作为Git服务端的运行环境,并方便后期免密推送及管理代码的需求,需要先安装OpenSSH及创建git专属用户等操作。

1. 先检查是否已经安装OpenSSH软件

dpkg --list | grep ssh

如果出现如上图所示,说明已经安装了OpenSSH软件;如果没有上图红框中的两行说明需要安装 openssh-server openssh-client;

apt-get install -y openssh-server openssh-client

安装完成之后再次用上述命令(dpkg --list | grep ssh)进行检查是否已经安装成功,并可以使用以下命令查看ssh服务的运行状态及启动ssh服务

systemctl status ssh   查看ssh服务的运行状态

systemctl enable ssh   启动ssh服务

2. 新建专属用户git,为了方便连接服务端仓库时使用

adduser git

然后输入两次密码,一路回车就创建好了

(PS: useradd git 这个命令也可以创建,区别在于执行这条命令时不需要设置密码,后面需要使用chpasswd命令来修改密码,如 echo "git:123456" | chpasswd)

3. 进入git用户主目录,先创建一个远端仓库(我这里将远端仓库放在了git主目录下,位置可以根据自己情况)

cd /home/git/private_code_repository/

创建一个名为FristProject的空仓库

git init --bare FirstProject.git

4. 在git主目录下先创建一个.ssh目录以便后面使用

mkdir -p /home/git/.ssh/

5. 修改仓库存放目录的所有者及所属组均为git,方面后面git用户可以直接访问

chown git:git -R /home/git/private_code_repository/

客户端上的配置操作

1. 打开终端窗口,使用以下命令生成公私匙

ssh-keygen -t rsa

生成的公私钥一般存放在类似 C:\Users\DELL\.ssh 这样的目录下

 在 C:\Users\DELL\.ssh 目录下右键打开终端,使用scp将 id_rsa.pub 拷贝到服务端/home/git/.ssh/目录下,第一次操作时需要输入git用户的密码

在服务端进入/home/git/.ssh/目录,执行命令  cat id_rsa.pub >> authorized_keys (PS:这步操作需要在服务端执行一下)

本地待推送目录为空时

 2. 如果客户端还没有需要推送的本地仓库(空目录时),则可以直接clone服务端新建的仓库,直接clone的仓库已经默认为仓库添加了origin别名

3. 此时就可以在仓库下存放代码脚本等各种文件,然后执行下面操作将其提交到本地仓库
 

 4. 提交到本地仓库后,可以将其push的远端仓库(因为已经有了远端仓库的别名origin,所以可以直接push.PS:第一次push需要添加-u参数,后面就不需要了) 

 推送到远端仓库后,发现远端仓库FirstProject.git并没有什么明显的变化

5. 在服务器上的另一个目录下或者团队协作其他成员需要使用时模拟拉取操作,首次需要clone,后期pull

 6. 测试修改一次readme.txt文件后,客户端直接git push, 其他成员直接git pull就可以了

2-6步模拟了客户端为空目录时的情况,下面给出待推送目录已有代码文件时的情况:

本地待推送目录不为空时

 1. 先在服务端建立一个新的仓库SecondProject.git

2. 如下图所示,在本地机器上已有待推送的文件夹NewProject,但它不是一个受git管控的目录(没有.git目录)
3. 此时先将NewProject初始化为一个受git管控的目录(git init),然后再将所有代码文件提交的本地仓库(git add/git commit)

4. 此时虽然已经将NewProject提交到本地仓库,但还没有与任何远端仓库建立连接
 5. 将本地仓库与远端仓库SecondProject.git建立连接

git remote add origin ssh://git@10.1.104.100:/home/git/private_code_repository/SecondProject.git

git remote -v

6. 如上图所示已经将本地仓库与远端仓库建立了连接,就可以使用git push 推送代码到远端仓库
git push -u origin master

并在服务器上模拟从远端仓库clone操作

7. 测试在客户端修改文件后git push,然后在服务器上模拟拉取操作 git pull
 

 

以上演示了客户端待推送目录为空和不为空时的push操作;并模拟了从服务端仓库的clone与pull操作。

至此,就搭建好了自己的Git服务器,方便工作与学习中管理代码。

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

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

相关文章

kafka消费报错卡死:内存溢出OutOfMemoryError: Java heap space

文章目录 现象排查解决 现象 我们信控平台使用Java语言开发,Spring Cloud微服务架构,采用容器化部署,所有服务都部署在docker里面,使用docker-compose进行管理,使用portainer进行监控平台部署客户现场后,一…

如何做好IT类的技术面试

目录 一、IT行业的招聘渠道 二、如何做好技术面试官 三、谈谈IT行业如何做好招聘工作 四、面试IT公司的小技巧 五、面试有哪些常见的问题 六、关于面试的一些建议 面试可能是我们每个人都必须会遇到的事情,而技术面试更具有专业性,以下会从几个方面…

openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符

文章目录 openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符23.1 时间日期操作符23.2 时间/日期函数23.3 TIMESTAMPDIFF23.4 EXTRACT23.5 date_part openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符 23.1 时间日期操作符 用户在使用时…

【Java 高频面试闯关秘籍】大梦谁先觉,平生我自知

一、mysql使用innodb引擎,请简述mysql索引的最左前缀如何优化orderby语句? 关键点: (1)如果排序字段不在索引列上,filesort有两种算法:mysql就要启动双路排序和单路排序 (2&#x…

【系统监控程序】

用python编写一个系统监控程序,需要每隔一秒钟记录系统每个进程的资源占用和整体的资源占用情况,并输出成json,保存到文本文件。 import psutil import json import timedef get_process_usage():process_list []for proc in psutil.proces…

系统资源监控程序的改进

当需要监控硬盘读写和网络传输时,我们可以进一步使用psutil库来获取这些信息。以下是修改后的示例程序,增加了对硬盘读写和网络传输的监控: import psutil import json import timedef get_process_usage():process_list []for proc in psu…

解决分类任务中数据倾斜问题

大家好,在处理文本分类任务时,基准测试流行的自然语言处理架构的性能是建立对可用选项的理解的重要步骤。在这里,本文将深入探讨与分类相关的最常见的挑战之一——数据倾斜。如果你曾经将机器学习(ML)应用于真实世界的…

React Native RN state props

state: 是RN 专门用来标识是否重新渲染,通过属性的值来更新数据,React 内部会监听 state 的变化,一旦发生变化就会主动触发组件的 render() 方法来更新 Dom 结构,另外state是组件私有的,是没有办法通过其他…

VS+QT+PCL点云显示转网格表面体窗体实现

程序示例精选 VSQTPCL点云显示转网格表面体窗体实现 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<VSQTPCL点云显示转网格表面体窗体实现>>编写代码&#xff0c;代码整洁&…

正则表达式常用字符及案例

引言 正则表达式是一种强大而灵活的工具&#xff0c;它在文本搜索和处理中起到了至关重要的作用。熟练掌握正则表达式的常用字符和使用方法&#xff0c;将能帮助开发者更加高效地进行模式匹配和字符串操作。本文将介绍一些常见的正则表达式字符&#xff0c;并给出一些实际案例…

watch避坑,使用computed进行处理数据

业务场景&#xff1a;在vue中监听el-input 中的字数有没有超过60&#xff0c;如果超过60字时将60后面的字变为 “>>” 符号&#xff0c;以此实现预览苹果手机推送摘要场景。 错误&#xff1a;开始的逻辑是使用watch监听&#xff0c;检查length超过60直接 加上符号&#x…

python 网络编程

TCP编程 客户端 创建TCP连接时&#xff0c;主动发起连接的叫做客户端&#xff0c;被动响应的叫做服务端。当定义一个Socket表示打开一个网络连接&#xff0c;创建一个Socket需要知道目标计算机的IP地址和端口号和对应的协议类型。 # 导入socket库: import socket# 创建一个s…

基于MSP432P401R爬坡小车【2020年电赛C题】

文章目录 一、任务清单1. 硬件部分2. 软件部分 二、OpenMV巡线三、舵机转向四、停止线识别五、技术交流 一、任务清单 1. 硬件部分 主控板&#xff1a; MSP432P401R数据显示&#xff1a; OLED电机&#xff1a; 霍尔编码器电机电池&#xff1a; 7.3V航模电池巡线&#xff1a; …

图像中不规则物体的长轴与短轴:OpenCV实现指南

1.首先&#xff0c;读取图像并将其转换为灰度图像。 2.进行图像预处理&#xff0c;包括使用高斯模糊和阈值化&#xff0c;以便更好地处理图像。 3.通过使用OpenCV的cv2.findContours()函数&#xff0c;找到图像中的所有轮廓。 4.遍历所有轮廓&#xff0c;如果轮廓点的数量大…

使用ajax进行前后端交互的方法

使用ajax进行前后端交互的方法&#xff1a;&#xff08;我只测试通了json对象作为参数的方式&#xff0c;其他方式我没有测试通过&#xff09; 1、前端方法&#xff1a; 传参方式&#xff1a;POST 请求类型&#xff1a;json对象 响应类型&#xff1a;json对象 function test() …

idea 里 controller service impl mapper xml 切换跳转快捷键

首先在controller层&#xff0c;对着接口点方法的方法上按着ctrl和鼠标左键&#xff0c;你会进入service层。 对着方法ctrlaltb不按鼠标&#xff0c;你会进入impl层。service层的方法上按ctrl和鼠标左键会回到controller&#xff0c;ctrlaltb不按鼠标也会进入到impl层,impl上的…

[Linux]线程基本知识

概念 进程 一个正在执行的程序&#xff0c;它是资源分配的最小单位 进程中的事情需要按照一定的顺序逐个进行 进程出现了很多弊端: 一是由于进程是资源拥有者&#xff0c;创建、撤消与切换存在较大的时空开销&#xff0c;因此需要引入轻型进程&#xff1b; 二是由于对称多…

localhost和127.0.0.1一样吗?

学习笔记&#xff0c;如有错误&#xff0c;感谢指出&#xff01; 文章目录 1. 对比方式一1.1 表示方式&#xff1a;1.2 主机名解析&#xff1a;1.3 IPv6 支持&#xff1a;1.4 可读性和易用性&#xff1a;1.5 小总结 2. 对比方式二2.1 原理不同2.2 概念不同2.3 指向不同 1. 对比…

C++:类和对象(下)---对类和对象深入一些的理解

文章目录 构造函数&#xff1f;初始化列表explicit关键字 匿名对象 构造函数&#xff1f; 初始化列表 前面已然介绍过构造函数&#xff0c;但并未完全结束&#xff0c;构造函数有很多种写法&#xff0c;有带缺省参数的&#xff0c;有全缺省的&#xff0c;不带缺省参数的…但用…

未来的算法备案法规:创新和安全如何兼顾?

随着科技的快速发展&#xff0c;算法正逐步渗透到我们生活的各个方面&#xff0c;从推荐引擎到自动驾驶&#xff0c;从医疗诊断到金融交易&#xff0c;这一现象既充满希望&#xff0c;也充满了挑战。其中一个关键的挑战就是如何设计和实施有效的算法备案法规&#xff0c;以促进…