当前位置: 首页 > news >正文

「解析」Jetson配置 git服务

这两天感冒了在家休养,想着把之前买的 Jetson 开发板用起来,买Jetson的初衷就是用来学习Linux系统,顺道可以部署算法,以及一些其他需求,相比树莓派而言,Jetson开发相对更贵,但是其配备了英伟达的显卡以及CUDA,这一点是树莓派所无法比拟的,正好在家休息就补个坑。之前一直有个想法:如何在开发板上配置 git服务,将自己的项目代码 备份到自己的服务器,即保证数据的版本管理,也保证了数据的安全性,顺道还可以学习下 git / linux 的相关命令。

之前有给自己装备一款NAS,因为功能简单只能当做纯文件存储器使用,因此无法将git部署到NAS,但是无妨 差生文具多,NAS不行 Jetson来凑。

在这里插入图片描述

上一次讲了 Windows如何优雅使用Terminal,但是Windows的Terminal终究不如Linux系统的舒服,因此Windows作为生活学习的主力,Jetson开发板配置的Ubuntu20.04作为 学习Linux的主力。

1、jetson 部署 git服务

1.1 安装 git

一般情况下,jetson安装完系统,会自动安装 git,可以通过 git --version 查看安装版本,也可以通过以下命令安装更新 git

sudo apt-get update
sudo apt-get install git		# 初次安装 git

1.2 创建 git 用户

非必要性,如果你也跟我一样,是自己使用,其实都无所谓

sudo adduser git

根据自己实际情况填写用户信息,密码需记牢,git账号的信息,可以使用默认设置

创建完 git用户之后,可能存在以下错误:

git is not in the sudoers file. This incident will be reported.

这是因为没有给 git 用户加入到 sudo 配置中,因此在切换到 git用户时,无法使用 sudo 命令

首先修改下 sudoers 的写入权限

chmod u+w /etc/sudoers

然后编辑 sudoers

vim /etc/sudoers

找到 root ALL=(ALL) ALL,在其下方添加

root ALL=(ALL) ALL
git  ALL=(ALL) ALL		# 将 git 改为你自己的用户名

添加完成后,再将 sudoers的权限给修改回去

chmod u-w /etc/sudoers

这样 git 用户就也可以调用 duso 命令了

1.3 创建 git 仓库

目前需要先创建一个空的仓库,然后才能够进行上传,后续我再测试下直接上传不存在的仓库

选择一个 保存 git仓库的路径,在此以 /git/ 为例

sudo su - git
mkdir /git/demo.git
cd /git/demo.git
git init --bare				# 初始化仓库

1.4 修改仓库路径权限

其实创建 git 用户就是避免其他用户不小心修改 其中的仓库,因此创建一个新的用户更加安全,另外,也可以给仓库路径设置 用户权限,是其他用户无法访问,这样就保证了数据的安全性

可以通过以下命令修改 仓库的访问权限

sudo chown -R git:git /git/

其中 -R 是为了保证 /git 路径的权限支持向下兼容,不至于每次都修改权限;
git:git 表示的是 git用户以及 git组,可以通过 id git 查看 git用户所属的 组,其中 uid 是用户名,gid是组名,grous 是用户 git 同时也附加与其他组

uid=1001(git) gid=1001(git) groups=1001(git),29(audio),44(video),103(render),113(i2c),130(gdm),999(gpio),996(weston-launch)

通过 ll 命令就可以查看当前路径下的权限信息,可以看到 git用户已经有了 ./ 以及其中的 DeepSort_Pytorch.git/ 仓库的权限了,并且其他非root用户没有权限

git@ubuntu:/git$ ll
total 12
drwxr-xr-x  3 git  git  4096 Jan 16 02:39 ./
drwxr-xr-x 20 root root 4096 Jan 16 02:18 ../
drwxrwxr-x  7 git  git  4096 Jan 16 02:43 DeepSort_Pytorch.git/

至此,jetson 已经配置好了 git 服务,只差代码上传

1.5 配置 SSH

博主因为是使用的 windows系统进行上传,通常使用 ssh 连接 jetson,因此还需要再配置下 SSH

sudo apt-get install openssh-server

然后,为 git用户配置 SSH

sudo su - git
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

此处需要在 windows系统上生成下 ssh 公钥,方法如下

ssh-keygen -t rsa -C "youremail@example.com"

密钥类型可以用 -t 选项指定,如果没有指定则默认生成用于SSH-2的RSA密钥,这个命令使用的是rsa。

完成之后一般会保存在 C:\Users\Administrator\.ssh\id_rsa ,可以通过 txt文本打开

将其公钥保存至 jetson:~/.ssh/authorized_keys 文件中,这样就不需要每次输入用户名/邮箱名 和 密码了

1.6 启动 git 服务

退出 git 用户,并重启 SSH 服务

exit
sudo service ssh restart

至此,Git 服务器应该已经在 Jetson 上成功部署。


2、Windows 连接 jetson

因为使用的局域网,没有购买公网ip,因此也就无法外网访问了,虽然损失了方便性,但是保证了安全,而且出发点就是在家自用,基本需求满足即可,后续有外网访问的需求再说。

windows连接 ubutnu 一般直接采用 ssh连接,连接方式为 ssh <username>@<jetson_ip>


3、从 Windows 上传仓库到 Jetson

首先需要确保 jetson 上有对应的 git 仓库,没有的话,先创建一个空仓库 见 1.3。然后对windows本次代码 git 初始化,并提交推送 至 jetson的git服务中

git init
git add .
git commit -m "Initial commit"
git remote add origin git@<jetson_ip>:/git/demo.git

3.1 最后推送

使用以下命令将代码推送到 Jetson git服务器

git push -u origin master

这将把你的本地代码推送到 Jetson Git 服务器的 master 分支。如果这是第一次推送,可能需要输入 Git 用户的用户名和密码。

如果你使用 SSH 密钥进行身份验证,确保你的 SSH 密钥已经添加到 Jetson Git 服务器的 ~/.ssh/authorized_keys 文件中。

3.2 仓库拉取

如果在 Jetson 上有其他人推送了更改,你可以使用以下命令拉取这些更改:

git pull				
# 或
git pull origin master

这会将 Jetson Git 服务器上的最新更改拉到你的本地仓库。

相关文章:

「解析」Jetson配置 git服务

这两天感冒了在家休养&#xff0c;想着把之前买的 Jetson 开发板用起来&#xff0c;买Jetson的初衷就是用来学习Linux系统&#xff0c;顺道可以部署算法&#xff0c;以及一些其他需求&#xff0c;相比树莓派而言&#xff0c;Jetson开发相对更贵&#xff0c;但是其配备了英伟达的…...

uniapp使用安装sass

1.首先你要安装node-sass npm install node-sass --save-dev2.安装sass-loader npm install sass-loader --save-dev3.修改style标签&#xff0c;声明使用sass <style lang"scss" scoped>...

ClickHouse学习笔记(六):ClickHouse物化视图使用

文章目录 1、ClickHouse 物化视图2、物化视图 vs 普通视图3、物化视图的优缺点4、物化视图的用法4.1、基本语法4.2、准备表结构4.3、准备数据4.3、查询结果 1、ClickHouse 物化视图 ClickHouse 的物化视图是一种查询结果的持久化&#xff0c;它的存在是为了带来查询效率的提升…...

华为OD机试真题-最小矩阵宽度-2023年OD统一考试(C卷)

题目描述: 给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。 输入描述: 第一行输入两个正整数N,M,表示矩阵大小。 接下来N行M列表示矩阵内容。 下一行包含一个正整数K。 下一行包含…...

java stream distinct根据list某个字段去重

项目场景&#xff1a; java stream distinct根据list某个字段去重&#xff0c;普通List简单去重&#xff1a; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class TestMain {public static void main(String[] args) {List&l…...

超精简虚拟机镜像

前经常有人问我要极度精简的win 7 虚拟机镜像&#xff0c;开个贴直接发吧&#xff0c;这次包括 win10 和 win7 镜像,另有一个 win 8 win7 镜像压缩包只有 300Mb&#xff0c; win 10 镜像 有 800Mb&#xff0c; win 8 有 700Mb 系统极度精简&#xff0c;可以运行 qq 微信&#…...

【JVM】常用命令

一、前言 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的基础设施&#xff0c;它负责将Java字节码转换为本地机器代码并执行。在开发过程中&#xff0c;我们经常需要使用一些命令来监控和管理JVM的性能和状态。本文将详细介绍6个常用的JVM命令&#xff1a;jps、jstat…...

第 7 章 排序算法

文章目录 7.1 排序算法的介绍7.3 算法的时间复杂度7.3.1 度量一个程序(算法)执行时间的两种方法7.3.2 时间频度7.3.3 时间复杂度7.3.4 常见的时间复杂度7.3.5 平均时间复杂度和最坏时间复杂度 7.4 算法的空间复杂度简介7.4.1 基本介绍 7.5 冒泡排序7.5.1 基本介绍7.5.2 演示冒泡…...

机器人持续学习基准LIBERO系列7——计算并可视化点云

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新机器人持续学习基准LIBERO系列4——robosuite最基本demo机器人持续学习基准LIBERO系列5——…...

基于 Level set 方法的医学图像分割

摘 要 医学图像分割是计算机辅助诊断系统设计中的关键技术。对于医学图像分割问题,它一般可分为两部分:(l)图像中特定目标区域(器官或组织)的识别;(2)目标区域完整性的描述与提取。相比于其他图像,医学图像的复杂性和多样性,使得传统的基于底层图像信息的分割方法很难取得好的…...

【C++入门】C++ STL中string常用函数用法总结

目录 前言 1. string使用 2. string的常见构造 3. string类对象的访问及遍历 迭代器遍历&#xff1a; 访问&#xff1a; 4. string类对象的容量操作 4.1 size和length 4.2 clear、empty和capacity 4.3 reserve和resize reserve resize 5. string类对象的修改操作 push_back o…...

Rust变量、常量声明与基本数据类型

Rust是一门系统级别的编程语言&#xff0c;注重安全性、性能和并发。在这篇博客中&#xff0c;我们将介绍Rust中的变量、常量声明以及基本数据类型&#xff0c;并通过示例说明每一种类型的用法。 变量声明 在Rust中&#xff0c;使用 let 关键字声明变量。变量默认是不可变的&…...

【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 SSA奇异谱分析&#xff08;Singular Spectrum Analysis&#xff09;是一种处理非线性时间序列数据的方法&#xff0c;可以对时间序列进行分析和预测。 它基于构造在时间序列上的特定矩阵的奇异值分解&#…...

Nginx+Tomcat负载均衡、动静分离以及Nginx负载均衡和四层代理

目录 NginxTomcat负载均衡、动静分离 Nginx 负载均衡模式&#xff1a; Nginx 四层代理配置&#xff1a; NginxTomcat负载均衡、动静分离 Nginx 服务器&#xff1a;192.168.80.10:80 Tomcat服务器1&#xff1a;192.168.80.100:80 Tomcat服务器2&#xff1a;192.168.80.101:80…...

Vue3中provide,inject使用

一&#xff0c;provide,inject使用&#xff1a; 应用场景&#xff1a;向孙组件传数据 应用Vue3碎片&#xff1a; ref&#xff0c;reactive&#xff0c;isRef&#xff0c;provide, inject 1.provide,inject使用 a.爷组件引入 import {ref,provide} from vue const drinkListre…...

Django命令模块

这篇文章我们主要来介绍一下关于 Django 的命令模块&#xff0c;我们经常会使用到&#xff0c;比如以下几个常用的命令&#xff0c;都属于 Django 的命令模块&#xff1a; python manage.py makemigrations python manage.py migrate python manage.py startapp python manage…...

【linux驱动开发】在linux内核中注册一个杂项设备与字符设备以及内核传参的详细教程

文章目录 注册杂项设备驱动模块传参注册字符设备 开发环境&#xff1a; windows ubuntu18.04 迅为rk3568开发板 注册杂项设备 相较于字符设备&#xff0c;杂项设备有以下两个优点: 节省主设备号:杂项设备的主设备号固定为 10&#xff0c;在系统中注册多个 misc 设备驱动时&…...

Golang条件编译 | 获取系统的磁盘空间内存占用demo | gopsutil/disk库(跨平台方案)

文章目录 一、Golang条件编译1. 构建标签( Build tags)2. 文件后缀&#xff08;File suffixes&#xff09; 二、GO golang 获取磁盘空间 条件编译思路 三、【推荐】使用github.com/shirou/gopsutil/disk这个库&#xff0c;如何获取机器下不同磁盘分区的内容 一、Golang条件编译…...

22/76-池化

池化&#xff08;最大池化层&#xff1a;选每个kernel中最大的数&#xff09; 填充、步幅、多个通道&#xff1a; 池化层与卷积层类似&#xff0c;都具有填充和步幅。 没有可学习的参数。 在每个输入通道应用池化层以获得相应的输出通道。 输出通道数输入通道数。 平均池化层…...

江科大STM32 下

目录 ADC数模转换器DMA直接存储器存取USART串口9-2 串口发送接受9-3 串口收发HEX数据包 I2C(mpu6050陀螺仪和加速度计)SPI协议10.1 SPI简介W25Q64简介10.3 SPI软件读写W25Q6410.4 SPI硬件读写W25Q64 BKP、RTC11.0 Unix时间戳11.1 读写备份寄存器BKP11.2 RTC实时时钟 十二、PWR1…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

SpringSecurity+vue通用权限系统

SpringSecurityvue通用权限系统 采用主流的技术栈实现&#xff0c;Mysql数据库&#xff0c;SpringBoot2Mybatis Plus后端&#xff0c;redis缓存&#xff0c;安全框架 SpringSecurity &#xff0c;Vue3.2Element Plus实现后台管理。基于JWT技术实现前后端分离。项目开发同时采 …...

全面解析网络端口:概念、分类与安全应用

在计算机网络的世界里&#xff0c;数据的传输与交互如同一场繁忙的物流运输&#xff0c;而网络端口就是其中不可或缺的 “货运码头”。无论是日常浏览网页、收发邮件&#xff0c;还是运行各类网络服务&#xff0c;都离不开网络端口的参与。本文将深入介绍网络端口的相关知识&am…...

(33)课54:3 张表的 join-on 连接举例,多表查询总结。数据库编程补述及游标综合例题。静态 sqL与动态sqL(可带参数)

&#xff08;112&#xff09;3 张表的 join-on 连接举例 &#xff1a; &#xff08;113&#xff09; 多表查询总结 &#xff1a; &#xff08;114&#xff09;数据库编程补述 &#xff1a; 综合例题 &#xff1a; 以上没有动手练习&#xff0c;不知道这样的语法是否…...