宁波网站推广方式/微信社群营销推广方案
Git基础之远程服务器
Author:onceday date:2023年3月5日
满满长路有人对你微笑过嘛…
windows安装可参考文章:git简易配置_onceday_CSDN博客
參考文档:
- 《progit2.pdf》,Progit2 Github。
- 《git-book.pdf》
文章目录
- Git基础之远程服务器
- 1.概述
- 2. 创建裸仓库
- 3. Git 守护进程
- 4. HTTP协议
1.概述
远程仓库可以是一个裸仓库(base repository),即一个没有当前工作目录的仓库,只包含.git
文件夹里面的内容。
可以通过四种协议来传输资料:
-
本地协议
Local
,远程库是同一主机上的另外一个目录,通常通过共享文件系统实现。如果将所有代码都存放于同一台电脑,不是一个好主意。可以使用/srv/git/my.git
和file:///srv/git/mygit
,如果没有指定file://
,Git会尝试使用硬链接(hard link)或直接赋值所需的文件,如果指定file://
,Git会触发平时用于网路传输资料的进程,效率可能会低一些。如下是一个示例:
git clone /home/ubuntu/c-code/.git git add local /home/ubuntu/c-code/.git
-
HTTP协议,有智能协议(可以根据需要提供匿名服务或者加密授权服务)和哑协议两种(web服务器提供静态服务)。
-
SSH(secure Shell)协议,常见的安全和加密传输协议。
-
Git协议,这是包含在Git里的一个特殊守护进程,不能提供授权和加密服务,传输速率快。
一般来说HTTP协议和Git协议可用于大型开源代码的分享服务器,如果是可控开发,还是需要用到HTTPS协议和SSH协议。
2. 创建裸仓库
Git仓库需要创建裸仓库,通常需要从现有仓库中导出,裸仓库不能包含当前工作目录。
ubuntu->git-test:$ git clone --bare cc cc.git
Cloning into bare repository 'cc.git'...
done.
ubuntu->git-test:$ ll cc.git/
total 44
drwxrwxr-x 7 ubuntu ubuntu 4096 Mar 5 13:07 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 5 13:07 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 5 13:07 branches/
-rw-rw-r-- 1 ubuntu ubuntu 116 Mar 5 13:07 config
-rw-rw-r-- 1 ubuntu ubuntu 73 Mar 5 13:07 description
......
ubuntu->git-test:$ ll cc
total 112
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 5 12:51 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 5 13:07 ../
-rw-rw-r-- 1 ubuntu ubuntu 8124 Mar 5 12:48 .clang-format
drwxrwxr-x 8 ubuntu ubuntu 4096 Mar 5 12:48 .git/
-rw-rw-r-- 1 ubuntu ubuntu 6 Mar 5 12:48 .gitignore
-rw-rw-r-- 1 ubuntu ubuntu 63 Mar 5 12:48 makefile
-rw-rw-r-- 1 ubuntu ubuntu 408 Mar 5 12:48 socket.c
......
如上所示,使用git clone --bare project project.git
即可,project是当前git仓库的目录路径,project.git是新的裸仓库的目录路径。注意project.git
是目录不是文件,后缀.git
是惯例使用,而非必须。
上述命令的效果和cp -Rf project/.git project.git
是基本等价的,但配置文件有些许不同。
可以看到,裸仓库中只有.git
中的文件,而没有当前工作目录的内容。
创建好仓库后,可以通过SSH协议把文件复制到服务器上(需要先将SSH公钥放在服务器上):
scp -r cc.git ubuntu@onceday.work:/home/ubuntu/git-test/
然后便可以使用ssh来读取此服务器上/home/ubuntu/git-test/
目录来克隆对应仓库。
git clone ubuntu@onceday.work:/home/ubuntu/git-test/cc.git
如果SSH连接用户对该目录拥有可写入权限,那么他就拥有推送权限。
使用SSH连接直接初始化git裸仓库的命令如下:
git init --bare --shared
对于小型项目,上面的SSH+裸仓库已够用,只需通过对不同成员的账号进行管理即可。
对于用于ssh连接的账户,其shell可以设置为git-shell
,可以方便地将用户git的活动限制在与Git相关的范围内。更换ssh连接使用下述命令即可:
$ cat /etc/shells # see if git-shell is already in there. If not...
$ which git-shell # make sure git-shell is installed on your system.
$ sudo -e /etc/shells # and add the path to git-shell from last command
$ sudo chsh git -s $(which git-shell) # 修改指定系统用户的shell
设置为git-shell
的用户,其只能利用SSH连接对Git仓库进行推送和拉取操作,而不能登录机器并取得普通shell。任何试图登入,都会被拒绝。
3. Git 守护进程
这是创建一个Git协议的服务器,具体过程请参考progit2
书籍。
开启该服务器很简单,如下:
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
--reuseaddr
,选项允许服务器在无需等待旧连接超时的情况下重启。--base-path
,选项允许用户在未完全 指定路径的条件下克隆项目, 结尾的路径将告诉 Git 守护进程从何处寻找仓库来导出。- 如果有防火墙正在运 行,你需要开放端口 9418 的通信权限。
目前的Linux系统通常使用systemd
提供系统服务管理能力,如下配置:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
将该文件的内容放在/etc/systemd/system/git-daemon.service
中即可,操作主要使用接来下几个命令:
systemctl enable git-daemon
,使能该服务,在系统启动时能自动运行。systemctl start git-daemon
,启动该服务。systemctl stop git-daemon
,停止该服务。systemctl restart git-daemon
,重启该服务。systemctl disable git-daemon
,关闭该服务,后续不会随系统自启动。
通过在目标仓库下创建git-daemon-export-ok
文件可以允许Git提供无需授权的项目访问服务。
4. HTTP协议
关于这个协议,详情请参考progit2
书籍。
这个一般是借助web服务器来实现,这里推荐一下现代化的工具,即GitLab
,该工具是开源的,可以用来搭建私有的git 服务器,详情可以参考官方网站:GitLab.org / GitLab FOSS · GitLab。
web服务器来实现,这里推荐一下现代化的工具,即GitLab
,该工具是开源的,可以用来搭建私有的git 服务器,详情可以参考官方网站:GitLab.org / GitLab FOSS · GitLab。
相关文章:

Git(3)之远程服务器
Git基础之远程服务器 Author:onceday date:2023年3月5日 满满长路有人对你微笑过嘛… windows安装可参考文章:git简易配置_onceday_CSDN博客 參考文档: 《progit2.pdf》,Progit2 Github。《git-book.pdf》 文章目…...

Javalin解构
Javalin Javalin是一个轻量级http框架,我们可以很容易的了解请求的处理过程及其设计,具有较高的学习意义。 从demo说起 public static void main(String[] args) {Javalin app Javalin.create(config -> {System.out.println("用户配置"…...

yolov5算法,训练模型,模型检测
嘟嘟嘟嘟!工作需要,所以学习了下yolov5算法。是干什么的呢? 通俗来说,可以将它看做是一个小孩儿,通过成年人(开发人员)提供的大量图片的学习,让自己知道我看到的哪些场景需要提醒给成…...

linux系统防火墙开放端口
linux系统防火墙开放端口 在外部访问CentOS中部署应用时,需要通过防火墙管理软件,开端口,或者直接关闭防火墙进行解决(不建议) 加粗样式 常用命令: systemctl start firewalld #启动 systemctl stop firewalld #停止 systemctl status firewalld #查看…...

CSAPP第九章 虚拟内存
理解虚拟内存的原因 本章前部分描述虚拟内存是如何工作的,后一部分描述应用程序如何使用和管理虚拟内存 物理和虚拟寻址 虚拟内存作为缓存的工具 页表 页命中 缺页 虚拟内存作为内存管理的工具 简化链接,简化加载,简化共享,简化…...

numpy数组与矩阵运算(二)
文章目录矩阵生成与常用操作矩阵生成矩阵转置查看矩阵特性矩阵乘法计算相关系数矩阵计算方差、协方差、标准差计算特征值与特征向量计算逆矩阵求解线性方程组奇异值分解函数向量化矩阵生成与常用操作 矩阵生成 扩展库numpy中提供的matrix()函数可以用来把列表、元组、range对…...

Dubbo 中 Zookeeper 注册中心原理分析
Dubbo 中 Zookeeper 注册中心原理分析 文章目录Dubbo 中 Zookeeper 注册中心原理分析一、ZooKeeper注册中心1.1 ZooKeeper数据结构1.2 ZooKeeper的Watcher机制1.3 ZooKeeper会话机制1.4 使用ZooKeeper作为注册中心二、源码分析2.1 AbstractRegistry2.2 FailbackRegistry2.2.1 核…...

素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用
素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用 摘要:长期以来,人们认为哥德巴赫猜想没有什么实际应用的。 现在,我假设这个不是猜想,而是定理或公理,就产生了新的应用…...

递归-需要满足三个条件
一,概述 递归是一种应用非常广泛的算法(或者编程技巧)。很多数据结构和算法的编码实现都要用到递归,比如 DFS 深度优先搜索、前中后序二叉树遍历等。 去的过程叫“递”,回来的过程叫“归”。基本上所有的递归问题都可…...

【剑指Offer-Java】两个栈实现队列
题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 输入: [“CQueue”,“appendT…...

Allegro如何将Waived掉的DRC显示或隐藏操作指导
Allegro如何将Waived掉的DRC显示或隐藏操作指导 在用Allegro做PCB设计的时候,如果遇到正常的DRC,可以用Waive的命令将DRC不显示,如下图 当DRC被Waive掉的时候,如何将DRC再次显示出来。类似下图效果 具体操作如下 点击Display...

MATLAB——数据及其运算
MATLAB数值数据数值数据类型的分类1.整型整型数据是不带小数的数,有带符号整数和无符号整数之分。表中列出了各种整型数据的取值范围和对应的转换函数。2.浮点型浮点型数据有单精度(single)和双精度((double)之分&…...

【微信小程序】-- 页面导航 -- 声明式导航(二十二)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

gdb查看汇编代码的例子
gdb查看汇编代码的例子 操作步骤 用 gdb 启动可执行文件:gdb executable_file在 gdb 中设置断点:break function_name 或者 break *memory_address运行程序:run当程序停止在断点处时,使用 disassemble 命令来查看汇编代码&#…...

第四讲:如何将本地代码与服务器代码保持实时同步
一、前言 在我们进行 Ambari 二次开发时,通常会先在服务器上部署一套可以使用的 Ambari 环境。 二次开发,就肯定是要改动代码的,我们不能老是在服务器上用vim编辑文件,那样效率太低,始终不是长久之计。 所以我们需要在本地打开我们的Ambari源码项目,比如用idea工具,可…...

cuda调试(一)vs2019-windows-Nsight system--nvtx使用,添加nvToolsExt.h文件
cuda调试 由于在编程过程中发现不同的网格块的结构,对最后的代码结果有影响,所以想记录一下解决办法。 CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid cuda context (上下文) context类似于CPU进程上下,表示由管理层 Drive …...

向Spring容器中注入bean有哪几种方式?
文章前言: 写这篇文章的时候,我正在手机上看腾讯课堂的公开课,有讲到 Spring IOC 创建bean有哪几种方式,视频中有提到过 set注入、构造器注入、注解方式注入等等;于是,就想到了写一篇《Spring注入bean有几种…...

如何用 Python采集 <豆某yin片>并作词云图分析 ?
嗨害大家好鸭!我是小熊猫~ 总有那么一句银幕台词能打动人心 总有那么一幕名导名作念念不忘 不知道大家有多久没有放松一下了呢? 本次就来给大家采集一下某瓣电影并做词云分析 康康哪一部才是大家心中的经典呢? 最近又有哪一部可能会成为…...

Python装饰器的具体实用示例
示例1:普通装饰器 def name(n):def func(x):res n(xx)return resreturn funcname def run(x): # run name(run)print(x)if __name__ __main__:run(1) # 2def name(n):def func(*x):res n(xx)return resreturn funcname def run(x): # run name(run)pr…...

谈谈我对Retrofit源码的理解
文章目录一、Retrofit简介二、使用介绍2.1 app / build.gradle添加依赖2.2 创建 Retrofit 实例2.3 创建 API 接口定义文件2.4 使用 Retrofit 进行网络请求三、源码分析3.1 创建 Retrofit 实例: 建造者模式创建Retrofit3.2 实例化API接口: 动态代理模式3.3 获取Observable返回值…...

八股文(三)
目录 一、 如何理解原型与原型链 二、 js继承 三、 vuex的使用 1.mutation和action的区别 mutation action 2.Vuex都有哪些API 四、 前端性能优化方法 五、 类型判断 题目 (1)typeof判断哪个类型会出错(即结果不准确)&…...

2023最新实施工程师面试题
1、两电脑都在同一个网络环境中,A 电脑访问不到 B 电脑的共享文件。此现象可能是哪些 方面所导致?怎样处理? 答:首先你要确定是不是在一个工作组内,只有在一个工作组内才可以共享文件,然后看一个看一看有没有防火墙之类的,然后确定文件是不是已经共享 2、 电脑开机时风扇…...

安卓逆向_6 --- JNI 和 NDK
Java 本机接口规范内容:https://docs.oracle.com/en/java/javase/19/docs/specs/jni/index.html JNI官方中文资料:https://blog.csdn.net/yishifu/article/details/52180448 NDK 官方文档:https://developer.android.google.cn/training/ar…...

Pod控制器
K8S之控制器详解#简介#在kubernetes中,按照Pod的创建方式可以将其分为两类:自主式:kubernetes直接创建出来的Pod,这种Pod删除后就没有了,也不会重建。控制器创建pod:通过Pod控制器创建的Pod,这种Pod删除之后还会自动重…...

微服务到云原生
微服务到云原生 微服务 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各…...

Spring Security 实现自定义登录和认证(1):使用自定义的用户进行认证
1 SpringSecurity 1.1 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>1.2 编写配置类 在spring最新版中禁用了WebSecurityConfigurerAdapter…...

Spring Cloud(微服务)学习篇(七)
Spring Cloud(微服务)学习篇(七) 1.使用代码的方式实现流量限制规则 1.1 变更SentinelController类 1.1.1 加入的代码 //流控限制 (一个或多个资源限流), postConstruct注解的作用是保证项目一启动就会加载,// 一个rule就是一个规则PostConstructpublic void FlowRule(){Li…...

嵌入式安防监控项目——前期知识复习
目录 一、概述 二、C语言 三、数据结构 四、IO进程 五、网络 六、ARM体系结构和接口技术 七、系统移植 八、内核驱动 一、概述 我再报班之前学过51和32,不过都是自学的。报班开始先从应用层入手的,C语言和数据结构。只要是个IT专业的大学这都是必…...

SpringAOP——基础知识
AOP AOP全称是Aspect Oriented Programming 即面向切面编程,是对一类统一事务的集中处理 例如,我们的网页许多地方都需要进行登陆验证,这时就需要在很多地方添加重复的验证代码,而AOP可以集中配置需要登陆验证的地方,…...

kafka3.0安装使用
一:定义 Kafka传 统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka最 新定义 : Kafka是 一个开源的 分 布式事件流平台 (Event St…...