上传WSL项目到gitlab
上传WSL项目到gitlab
- 设置ssh
- 将SSH公钥添加到Gitlab
- 将WSL上的代码上传到gitlab
- 确保在WSL环境中安装了git
- 下面是上传代码到GitLab的具体步骤:
- 可能遇到的各种错误
设置ssh
Gitlab添加SSH KEY
什么是SSH ?
SSH 是一种网络协议,具备协议级别的认证及会话管理等功能。另外在架设 SSH 服务方面,任何人都可以轻易地创建安全等级高的服务。相比而言 HTTP 协议则没有上述的特点。
在WSL(Windows Subsystem for Linux)中,SSH公钥通常存储在用户的~/.ssh目录下。具体的文件名通常是 id_rsa.pub(对于RSA密钥)或其他与使用的密钥算法有关的名称。
# 找到SSH公钥:您可以通过以下命令查找并显示您的SSH公钥
cat ~/.shh/id_rsa.pub
# 如果该命令返回“没有那个文件或目录”之类的消息,那么您可能还没有生成SSH密钥。# 生成新的SSH密钥:如果您没有SSH密钥,您可以使用以下命令生成一个新的SSH密钥:
ssh-keygen -t rsa -b 4096
#一路按enter即可, 这通常会在~/.ssh目录下生成一个新的SSH密钥对(id_rsa和id_rsa.pub)。# 添加到ssh-agent:确保ssh-agent正在运行,并将您的私钥添加到ssh-agent。您可以用以下命令来实现
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa# 查看SSH公钥
cat ~/.shh/id_rsa.pub
请注意,以上命令和文件路径假设您是在WSL中的Linux环境里运行这些操作,而不是在Windows环境里。在WSL中,您通常应该使用Linux的文件路径和命令。
一旦您找到或生成了SSH公钥,您就可以将其复制并粘贴到GitLab或其他远程Git服务中以完成身份验证。请确保您没有不小心包含多余的空格或换行符,这些都可能导致密钥无法正常工作。

将SSH公钥添加到Gitlab
用下图方式找到SSH Keys的位置

将cat ~/.shh/id_rsa.pub输出的内容复制,然后粘贴到Key的部分,可以生成如下的SSH Keys

确保SSH密钥已加载
在本地计算机上运行以下命令,以确保SSH密钥已经被加载到ssh-agent中。
# 确保SSH密钥已加载
ssh-add -l# 测试SSH连接
ssh -T git@git.gxar.com
# 如果一切正常,您应该会看到一个欢迎消息# 确保您有权限访问此仓库
#确保您的GitLab账户有权限访问您试图推送到的远程仓库。如果您没有权限,您将无法进行推送# 检查远程仓库URL
git remote -v

将WSL上的代码上传到gitlab
确保在WSL环境中安装了git
如果尚未安装,您可以使用以下命令进行安装:
sudo apt update
sudo apt install git
下面是上传代码到GitLab的具体步骤:
创建GitLab仓库
- 登录到GitLab账户
- 点击"New project"创建新的代码仓库
- 输入项目名,可选的描述,然后选择项目的可见性
- 点击“Create project”
从WSL上传代码
- 初始化本地仓库
在WSL中,打开你的代码所在目录。
cd path/to/your/project
比如我想把我的TEXTurePaper文件夹下的所有文件都上传

初始化一个新的Git仓库。
git init
- 添加所有文件到新的Git仓库
git add .
注意:这会添加当前目录和子目录中的所有文件。如果你只想添加特定文件或文件夹,可以指定它们(如:git add 或 git add <foldername>/)。
- 提交您的代码
git commit -m "Initial commit"
4.添加GitLab仓库为远程仓库
从GitLab项目页面复制“Clone with HTTPS”或“Clone with SSH”链接。
git remote add origin <Copied-URL>
例如:
# 使用HTTPS
git remote add origin https://gitlab.com/username/project.git
或如果你使用SSH,这里建议使用SSH!!!
# 使用SSH
git remote add origin git@gitlab.com:username/project.git
- 推送代码到GitLab
# git push -u origin master
git push -u origin main
这将推送代码到GitLab上名为“main”的分支。
- 验证和完成
打开GitLab,刷新项目页面,您应该能看到已上传的代码。
这样您就成功地从WSL环境上传了代码到GitLab。
可能遇到的各种错误
(base) aaa@ASUS:~/ML/paper/TEXTurePaper$ git commit -m "Initial commit"*** Please tell me who you are.Rungit config --global user.email "you@example.com"git config --global user.name "Your Name"to set your account's default identity.
Omit --global to set the identity only in this repository.fatal: empty ident name (for <aaa@ASUS.localdomain>) not allowed
这个错误是因为Git需要知道提交是由谁进行的,所以它需要您设置全局或者针对当前仓库的用户名和邮箱地址。
这里是解决步骤:
选择1:
设置全局级别的用户名和邮箱(不建议!!!)
如果您希望在所有Git仓库中使用同一名称和邮箱,您可以运行以下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
选择2:
设置仓库级别的用户名和邮箱
如果您只想针对当前的Git仓库设置用户名和邮箱,您可以在同一命令中省略–global选项:
git config user.email "you@example.com"
git config user.name "Your Name"
同样地,将其中的"you@example.com"和"Your Name"替换成您的实际邮箱地址和姓名。
提交代码
完成这些设置后,您就可以再次尝试提交代码:
git commit -m "Initial commit"
这次应该不会出现之前的错误信息了。然后,您可以继续之前的步骤,将代码推送到GitLab。
(base) aaa@ASUS:~/ML/paper/TEXTurePaper$ git remote add origin https://git.gxar.com/demo/TEXTure.git
fatal: remote origin already exists.
这个错误表示在当前Git仓库中,已经存在名为 origin 的远程仓库。如果你确定要用新的URL替换现有的origin,可以先删除旧的,然后添加新的。
查看现有的远程仓库
首先,你可以查看所有关联的远程仓库以及它们的URL:
git remote -v
删除现有的origin
如果你确定要替换,可以先删除现有的origin:
git remote remove origin
# 或者使用
git remote rm origin
添加新的origin
然后,你就可以使用新的URL添加origin了:
git remote add origin https://git.gxar.com/demo/TEXTure.git
或者,直接更改origin的URL
如果你不想删除现有的origin,也可以直接更新其URL:
git remote set-url origin https://git.gxar.com/demo/TEXTure.git
这样,你就成功地更改了远程仓库的URL。之后,你可以继续推送代码到新设置的origin。
(base) aaa@ASUS:~/ML/paper/TEXTurePaper$ git push -u origin master
error: src refspec master does not match any
error: failed to push some refs to 'https://git.gxar.com/demo/TEXTure.git'
检查当前分支
首先,确保你在你想推送的分支上(通常是master或者main)。你可以使用下面的命令来查看所有的分支:
git branch

(base) aaa@ASUS:~/ML/paper/TEXTurePaper$ git remote add origin git@git.gxar.com:demo/TEXTure.git
fatal: remote origin already exists.
这个错误表明一个名为 origin 的远程仓库已经存在在您的本地Git配置中。如果您想添加一个新的远程仓库并将其命名为 origin,您有两个选项:
选项一:删除旧的远程仓库
a 首先,使用以下命令查看当前的远程仓库设置:
git remote -v
这会列出所有远程仓库以及它们的URL。
b 然后,使用以下命令删除已有的 origin:
git remote remove origin
c 最后,添加新的 origin:
git remote add origin git@git.gxar.com:demo/TEXTure.git
选项二:使用不同的名字
如果您不想删除旧的 origin,您可以选择一个不同的名字为您的新远程仓库。
git remote add new_origin git@git.gxar.com:demo/TEXTure.git
之后,您可以使用这个新的名字(new_origin)来进行 push、pull 等操作。
例如:
git push -u new_origin main
选择一个方案后,按照对应的步骤进行,应该就可以解决您的问题。
(base) aaa@ASUS:~/ML/paper/TEXTurePaper$ git commit -m "Initial commit"
On branch main
nothing to commit, working tree clean
这个消息表示在您尝试进行Git提交(commit)时,Git没有发现任何未提交(uncommitted)的改动。换句话说,您的工作目录是“干净的”,意味着您没有进行任何改变,或者您已经将所有改动添加(staged)并提交(committed)了。
这里有几种可能的情况:
没有新文件或改动:如果您刚刚初始化了一个新的Git仓库,或者没有做出任何改变,那么Git自然没有任何内容可以提交。
改动已经被提交:如果您之前已经添加并提交了所有改动,那么工作目录也会是干净的。
如何解决
如果您确实有需要提交的新文件或改动,确保首先使用git add <file>命令来添加它们。例如:
git add myfile.txt
或添加所有改动:
git add .
然后尝试再次提交:
git commit -m "Your commit message"
如果您不确定是否有任何未添加或未提交的改动,您可以使用以下命令查看:
git status
这将显示所有未添加(unstaged)或未提交(uncommitted)的改动。
如果git status显示您的工作树是干净的,但您确信应该有一些改动需要提交,那么您可能在错误的目录或分支中。确保您处于正确的工作目录并且已经切换到了包含您改动的分支。
- 使用SSH URL!!!
我他妈之前一直是使用的HHTPS,我还以为是用的SSH:
git remote add origin https://git.gxar.com/demo/demo-texture.git我使用的是这个,这个应该是SSH吧
实际上,上面使用的URL https://git.gxar.com/demo/demo-texture.git 是一个HTTPS URL,而不是SSH URL。
HTTPS和SSH是两种不同的协议,用于与远程Git仓库进行通信:
HTTPS URL 通常看起来像这样: https://<hostname>/<user>/<repository>.git。
SSH URL 通常看起来像这样: git@<hostname>:<user>/<repository>.git。
如果您想使用SSH,您需要找到SSH形式的Git仓库URL。这通常可以在GitLab仓库的“Clone”或“Clone Repository”部分找到。
在找到SSH URL后,您可以使用以下命令更改远程仓库的URL:
git remote set-url origin git@git.gxar.com:demo/demo-texture.git
注意:在使用SSH之前,确保您已生成SSH密钥并添加到GitLab账户,还要确保SSH agent运行并已加载了您的SSH密钥。这些步骤对于SSH身份验证是必要的。

相关文章:
上传WSL项目到gitlab
上传WSL项目到gitlab 设置ssh将SSH公钥添加到Gitlab 将WSL上的代码上传到gitlab确保在WSL环境中安装了git下面是上传代码到GitLab的具体步骤: 可能遇到的各种错误 设置ssh Gitlab添加SSH KEY 什么是SSH ? SSH 是一种网络协议,具备协议级别的认证及会话…...
从0开始做yolov5模型剪枝
文章目录 从0开始做yolov5模型剪枝 ****1 前言2 GitHub取源码3 原理3.1 原理3.2 network slimming过程 4 具体实施步骤4.1 安装虚拟环境4.2 配置参数4.2.1 数据集参数4.2.2 模型结构参数4.2.3 train.py中的参数 4.3 正常训练4.3.1 准备4.3.2 训练及问题解决 4.4 稀疏化训练4.4.…...
飞天使-k8s基础组件分析-安全
文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥? 答:集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有…...
Mysql安装使用
Mysql下载: MySQL :: Download MySQL Community Server Mysql解压: 解压后在根目录新建data文件夹和新建my.ini文件 my.ini文件内容如下: 注意:记得修改目录位置 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\mysql-5.7.30…...
聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化
聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化 目录 聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化,聚类结果可视化,MATLAB程…...
uniapp 使用 mui-player 插件播放 m3u8/flv 视频流
在UniApp中使用mui-player插件播放M3U8/FLV视频流,可以按照以下步骤进行操作: 1. 安装mui-player插件 :在UniApp项目根目录下,使用命令行工具执行以下命令安装mui-player插件: npm install mui-player --save2. 在需…...
大数据课程K4——Spark的DAGRDD依赖关系
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的DAG; ⚪ 掌握Spark的RDD的依赖关系; ⚪ 了解Spark对于DAG的Stage的划分; 一、DAG概念 1. 概述 Spark会根据用户提交的计算逻辑中的RDD的转换和动作来生成RDD之间的依赖关…...
disable 禁用元素后无法触发点击事件
业务需求点击被禁用的输入框触发事件 在被禁用元素上套一层div div上绑定事件 原本是不需要加事件穿透即可触发 但是最近谷歌更新触发不了 加一个事件穿透就好了 核心代码 style"pointer-events:none"style“pointer-events:none” 事件穿透 整体代码 <el-table-…...
uni-app开启gzip配置
指令:npm install webpack4.46.0 --save-dev 指令:npm install compression-webpack-plugin6.1.1 --save-dev vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin);module.exports {configureWebpack: config > {…...
房屋结构健康监测,科技助力让建筑更安全
房屋建筑是人们赖以生存的场所,然而当前我国许多房屋已经达到了使用寿命的中期,房屋的安全系数逐年降低,风险也随着时间的推移而累积。长期以来,我国的房屋普遍存在寿命短、隐患多的问题,“重建设,轻管理”…...
Android 面试之Glide做了哪些优化?
前言 Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客。 但是Glide的源码内容比较多,想要学习它的源码往往千头万绪,一时抓不住重点.…...
【韩顺平 零基础30天学会Java】数组、排序和查找(2days)
数组、排序、查找和多维数组 数组可以存放多个同一类型的数据。数组也是一种数据类 型,是引用数据类型。 定义一个数组 double[] hens {3,5,1,3.4,2,50} 遍历数组得到数组所有元素的和 hens[下标],下标是从0开始编号的。 可以通过数组名.lenght得到数组…...
VUE笔记(一)初识vue
一、vue的简介 1、什么是vue 官网地址:Vue.js Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。 构建用户界面:之前在学习vue之前通过原生js对DOM操作进行构建用户界面的 使用原生js构建用户界面的不足 - 没有规范,…...
3D点云处理:学习总结(更新整理中)
文章目录 开发工具个人看法 微信:dhlddx B站演示视频 前置说明:仅是个人在使用pcl开发过程中的总结(点云处理顺序或比较实用的功能),不喜勿喷; 开发工具 开发IDE:Qt Creator(Windo…...
Day45|leetcode 70. 爬楼梯、322. 零钱兑换、279.完全平方数
leetcode 70. 爬楼梯 题目链接:70. 爬楼梯 - 力扣(LeetCode) 本题可以用背包问题来解决,就相当于楼顶是背包,台阶是物品,相当于之前写法的进阶版。 代码实现 class Solution { public:int climbStairs(in…...
arm:day9
1。思维导图 2..I2C实验,检测温度和湿度 iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "gpio.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4…...
【大模型AIGC系列课程 1-2】创建并部署自己的ChatGPT机器人
OpenAI API 调用 获取 openai api api-key https://platform.openai.com/account/api-keys 利用 python requests 请求 openai 参考 openai 接口说明:https://platform.openai.com/docs/api-reference/chat/create import json # 导入json包 import requests # 导入req…...
启动metastore服务报错
启动Metastore的时候报错: 简略的报错信息: MetaException(message:Error creating transactional connection factory)Caused by: MetaException(message:Error creating transactional connection factory)Caused by: javax.jdo.JDOFatalInternalExce…...
c 语言 算法 技巧 之 用移位来代替乘除
除法 当你需要计算一个数的一半时,通常我们会考虑使用除法运算(/)来实现。然而,计算机内部的运算中,除法通常比加法和乘法运算慢得多,因为除法需要更多的处理步骤。 位运算在这种情况下可以提供一个快速的…...
python爬虫实战零基础(3)——某云音乐
爬取某些云网页音乐,无需app 分析网页第二种方式批量爬取 声明:仅供参考学习,参考,若有不足,欢迎指正 你是不是遇到过这种情况,在pc端上音乐无法下载,必须下载客户端才能下载? 那么&…...
2026 AI搜索迭代下的获客革新:SEOGEO双引擎战略落地实战方案
2026 AI搜索迭代下的获客革新:SEO&GEO双引擎战略落地实战方案摘要:2026年生成式AI全面渗透搜索场景,传统关键词SEO流量遭遇结构性下滑,零点击搜索成为行业常态。本文以泉州本地中小企业数字化服务场景为依托,深度剖…...
告别UI适配烦恼:在UE5中创建自适应安全区,让你的游戏核心画面永不“跑偏”
告别UI适配烦恼:在UE5中构建动态安全区系统 当玩家沉浸在游戏世界时,突然发现血条遮挡了关键道具,或是虚拟摇杆挤占了战斗视野——这种糟糕的体验往往源于安全区设计的疏忽。随着移动设备异形屏和主机电视overscan区域的多样化,传…...
国产DSP FT-M6678中断开发避坑指南:从CIC配置到向量表编写的完整流程
FT-M6678中断开发实战:从CIC配置到向量表编写的避坑指南 第一次接触FT-M6678的中断系统时,我被各种专业术语和复杂的寄存器配置搞得晕头转向。直到项目进度告急,我才意识到那些看似晦涩的CIC配置细节,实际上决定了整个系统的实时响…...
JMeter精准控制1 QPS的底层原理与三种实战方案
1. 这不是“设个线程数”就能搞定的事很多人第一次用Jmeter做压测,看到“我要每秒发1个请求”,第一反应是:开1个线程,Ramp-up时间设为1秒,循环次数设无限——结果一跑起来,发现TPS忽高忽低,有时…...
《Sysinternals实战指南》ZoomIt 学习笔记(11.12):LiveZoom 实时放大——无闪屏放大与多屏演示技巧
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
Keil调试中局部变量修改限制的解决方案
1. 问题现象与背景解析在嵌入式开发过程中,调试环节往往占据整个开发周期的40%以上时间。作为Keil Vision的资深用户,我最近在调试一个基于C166架构的通信协议栈时,遇到了一个看似简单却令人困扰的问题:当我在receive_data函数内部…...
Unity ShaderGraph环境搭建避坑指南:URP/HDRP渲染管线匹配
1. 为什么“环境搭建”是ShaderGraph学习路上第一个真坑 很多人点开Unity ShaderGraph教程,第一眼看到“创建Sub Graph”“连接Base Color节点”,心里一热:这不就是拖拖拽帖?比写HLSL简单多了!结果双击打开Shader Gra…...
MinerU实战训练营教程及配套素材
目前实战训练营的所有课程视频和文档都已经更新,如需要学习可访问飞书文档进行查看:https://aicarrier.feishu.cn/wiki/Bv0GwrC26iCp5LkqBjHcM8mjnOe • 相关课程材料也已经上传GitHub repo:https://github.com/opendatalab/mineru-tutorial…...
深入nRF5340双核通信:拆解LE Audio同步背后的IPC与DPPI机制
深入拆解nRF5340双核通信:LE Audio同步背后的IPC与DPPI实战解析 当你在调试nRF5340的LE Audio应用时,是否遇到过这样的场景:网络核(NET Core)已经收到了完整的音频数据包,但应用核(APP Core)的音频处理却出现了微秒级的延迟&#…...
西安家谱企业服务商
如果你还认为家谱印刷只是老年市场的“老古董”,那你就错得离谱了。2024年,中国家谱印刷市场规模已突破58亿元,年复合增长率达21.3%,远超普通印刷行业。这背后,是新一代家庭对姓氏文化、家族记忆的数字化与实体化需求爆…...
