搭建自己的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,一经查实,立即删除!

相关文章

如何做好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…

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

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

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

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

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; 二是由于对称多…

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

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

Linux下查找python路径

本地目前装了几个版本的python&#xff0c;这里记录下查找python路径的方法。 1&#xff1a;whereis命令 whereis python2&#xff1a;which命令 which python与whereis相似&#xff0c;但which会返回第一个找到的执行文件的位置。 3&#xff1a;find命令 find命令可以搜索系…

web流程自动化详解

今天给大家带来Selenium的相关解释操作 一、Selenium Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API&#xff08;应用程序接口&#xff09;&#xff0c;可以让开发人员使用多种编程语言&#xff08;如Java、Python、C#等&#xff09;编写测试脚本&…

需求分析案例:消息配置中心

本文介绍了一个很常见的消息推送需求&#xff0c;在系统需要短信、微信、邮件之类的消息推送时&#xff0c;边界如何划分和如何设计技术方案。 1、需求 一个系统&#xff0c;一般会区分多个业务模块&#xff0c;并拆分成不同的业务系统&#xff0c;例如一个商城的架构如下&am…

day45-Netflix Mobile Navigation(左边侧边栏动态导航)

50 天学习 50 个项目 - HTMLCSS and JavaScript day45-Netflix Mobile Navigation&#xff08;左边侧边栏动态导航&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&…

33. 本地记事本

本地记事本 html部分 <button class"add"><i class"iconfont icon-jiahao"></i> </button>css部分 *{margin: 0;padding: 0; } body{background-color: #7bdaf3;display: flex;padding-top: 3rem;flex-wrap: wrap; } .add{pos…

每日一题——删除有序数组中的重复项

删除有序数组中的重复项 题目链接 注&#xff1a;本题所采用的方法是建立在移除元素的基础之上的&#xff0c;如果大家对双指针的方法不大了解&#xff0c;或者不会做《移除元素》这一题&#xff0c;建议先去看看&#x1f449;传送门 具体步骤 定义两个指针slow和fast&#…

【计算机网络】传输层协议 -- UDP协议

文章目录 1. 传输层相关知识1.1 端口号1.2 端口号范围划分1.3 知名端口号1.4 一些相关命令 2. UDP协议2.1 UDP协议格式2.2 UDP协议的特点2.3 什么是面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议 1. 传输层相关知识 传输层是计算机网络中的一个重要层…

【如何训练一个中英翻译模型】LSTM机器翻译模型部署之onnx(python)(四)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何…

云原生架构

1. 何为云原生&#xff1f; 很多IT业内小伙伴会经常听到这个名词&#xff0c;那么什么是云原生呢&#xff1f;云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。 当今时代&#xff0c;众多企业希望构建高度可扩展、灵活且有弹性的应用程序&#xff0c;以便能够快…