具身智能:宇树机器人开源整理以及技术解析猜测

具身智能:宇树机器人开源整理以及技术解析猜测

1. 引言

近年来,具身智能正悄然成为科技领域的新风口。从最初试探性的机器人走路跌跌撞撞,到如今能在春晚舞台上翩翩起舞、在高速奔跑中展现灵敏反应,机器人运动控制技术正以前所未有的速度进步。构建一个具备类人认知与运动能力的AGI机器人,不仅是许多科研工作者的梦想,更是工业界迈向智能制造的重要突破。随着量产流程不断成熟以及硬件成本的持续降低(价格已降至万元级别左右),机器人从实验室逐渐走向实际应用的舞台。本文基于《宇树开源整理(1) - 概览》的系列文章,结合当前网络上的前沿研究信息,全面解析宇树开源平台的技术体系,并对相关算法和实验细节做进一步探讨。

在这里插入图片描述

2. 开源仓库全景解析

宇树开源平台目前涵盖了超30个不同项目,其中以下16个仓库在GitHub上受到了广泛关注,按Star数降序排列如下:

排名仓库名称仓库介绍Star 数量
1unitree_rl_gym基于NVIDIA Isaac强化学习示例,支持Go2、H1、G1等多个型号机器人。1516
2unitree_rosROS仿真包,内含所有Unitree系列机器人的URDF文件,并提供详细的物理参数。767
3avp_teleoperate利用Apple Vision Pro平台实现远程操控Unitree G1和H1_2机器人。677
4unitree_guide结合《四足机器人控制算法 —— 建模、控制与实践》一书的实例,实现控制算法示范。373
5unitree_legged_sdk面向Aliengo、A1、Go1、B1等机器人开发真实环境应用的SDK。332
6unitree_mujoco以Mujoco为模拟器,支持C++/Python接口,集成地形生成器,用于仿真与真实系统之间的迁移。326
7point_lio_unilidar针对SLAM实现的Point-LIO激光惯性里程计,适用于Unitree L1激光雷达。277
8unitree_sdk2为Go2、B2、H1、G1等机器人在真实环境开发提供SDK工具。252
9unitree_IL_lerobot以G1双臂作为数据采集及测试平台,基于改进的LeRobot框架实现。168
10unitree_ros2在ROS2环境下开发Go2与B2机器人,接口与unitree_sdk2保持一致。196
11unitree_sdk2_pythonunitree_sdk2的Python接口。121
12unitree_model提供多种格式的机器人3D建模文件(包括xacro和URDF)。39
13kinect_teleoperate利用Azure Kinect DK相机,实现对Unitree H1机器人的远程操控。42
14unitree_actuator_sdk针对机器人执行器(电机等)的专用SDK。61
15unilidar_sdk2针对Unitree L2激光雷达开发的SDK。12
16z1_ros针对Z1机器人的ROS仿真包。23

各仓库从底层物理建模到高层控制策略,构成了一个完整、开放的机器人研发生态。这样的开放平台不仅加速了学术研究的进程,也大大降低了机器人技术应用的门槛。

3. 人形机器人平台与硬件构成

目前市面上最具代表性的人形机器人包括Unitree H1、H1-2和G1,它们在感知模块、处理器配置以及自由度设计上各有侧重:

机器人名称感知传感器控制计算单元开发计算单元总自由度(单腿/单手臂)
Unitree H13D激光雷达(MID-360) + 深度相机(D435)Intel Core i5-1235UIntel Core i7-1255U/1265U5/4
Unitree H1-23D激光雷达(MID-360) + 深度相机(D435)Intel Core i5-1235UIntel Core i7-1255U/1265U6/7
Unitree G13D激光雷达(MID-360) + 深度相机(D435i)——Jetson Orin NX6/5
注意: 此处"运控计算单元"指机器人内部专用的运动控制程序,不对外开放;而"开发计算单元"则提供了二次开发接口,为算法升级和功能扩展提供硬件支持。
!机器人硬件示意图
此外,当前硬件平台不断追求轻量化与高性能计算的平衡,这不仅使得机器人运动更加敏捷准确,同时也为多传感器融合和实时决策提供了保障。诸如Jetson Orin NX这样的嵌入式计算平台已成为智能机器人控制的重要加速器。

4. 强化学习基础与实现原理

4.1 核心要素综述

强化学习(Reinforcement Learning, RL)依靠智能体(agent)在与环境不断交互的过程中,通过奖惩反馈逐步优化行为策略,以达到长期收益最大化。其基本框架包括:

  • 环境(Environment): 如今主流的机器人仿真平台包括英伟达的Isaac Gym(现升级为Isaac Lab)。
  • 动作(Action): 机器人控制目标,通过传递给PD控制器实现关节位置或速度的精密调整。
    奖励函数(Reward): 用于量化动作效果的代码模块,每个细分部分(如速度、角速度、加速度、碰撞等)都设置了相应惩罚或奖励。
在这里插入图片描述

在物理模拟与真实部署中,奖励函数及其各项指标至关重要。例如,以下部分代码展示了激励基准和惩罚项的计算过程:

函数名功能描述计算公式
_reward_lin_vel_z惩罚 z 轴的基础线性速度torch.square(self.base_lin_vel[:, 2])
_reward_ang_vel_xy惩罚 xy 轴的基础角速度torch.sum(torch.square(self.base_ang_vel[:, :2]), dim=1)
_reward_orientation惩罚非水平的基础朝向torch.sum(torch.square(self.projected_gravity[:, :2]), dim=1)
_reward_base_height惩罚基础高度偏离目标值torch.square(base_height - self.cfg.rewards.base_height_target)
其中 base_height = self.root_states[:, 2]
_reward_torques惩罚施加的扭矩torch.sum(torch.square(self.torques), dim=1)
_reward_dof_vel惩罚关节自由度的速度torch.sum(torch.square(self.dof_vel), dim=1)
_reward_dof_acc惩罚关节自由度的加速度torch.sum(torch.square((self.last_dof_vel - self.dof_vel) / self.dt), dim=1)
_reward_action_rate惩罚动作的变化torch.sum(torch.square(self.last_actions - self.actions), dim=1)
_reward_collision惩罚选定身体部位的碰撞torch.sum(1.*(torch.norm(self.contact_forces[:, self.penalised_contact_indices, :], dim=-1) > 0.1), dim=1)
_reward_termination终端奖励 / 惩罚self.reset_buf * ~self.time_out_buf
_reward_dof_pos_limits惩罚关节自由度位置接近极限值torch.sum(out_of_limits, dim=1)
其中 out_of_limits = -(self.dof_pos - self.dof_pos_limits[:, 0]).clip(max=0.) + (self.dof_pos - self.dof_pos_limits[:, 1]).clip(min=0.)
_reward_dof_vel_limits惩罚关节自由度速度接近极限值torch.sum((torch.abs(self.dof_vel) - self.dof_vel_limits * self.cfg.rewards.soft_dof_vel_limit).clip(min=0., max=1.), dim=1)
_reward_torque_limits惩罚扭矩接近极限值torch.sum((torch.abs(self.torques) - self.torque_limits * self.cfg.rewards.soft_torque_limit).clip(min=0.), dim=1)
_reward_tracking_lin_vel跟踪线性速度指令(xy 轴)torch.exp(-lin_vel_error / self.cfg.rewards.tracking_sigma)
其中 lin_vel_error = torch.sum(torch.square(self.commands[:, :2] - self.base_lin_vel[:, :2]), dim=1)
_reward_tracking_ang_vel跟踪角速度指令(偏航)torch.exp(-ang_vel_error / self.cfg.rewards.tracking_sigma)
其中 ang_vel_error = torch.square(self.commands[:, 2] - self.base_ang_vel[:, 2])
_reward_feet_air_time奖励长步幅一系列逻辑处理后得到 rew_airTime,逻辑见原代码
_reward_stumble惩罚脚撞到垂直表面torch.any(torch.norm(self.contact_forces[:, self.feet_indices, :2], dim=2) > 5 * torch.abs(self.contact_forces[:, self.feet_indices, 2]), dim=1)
_reward_stand_still惩罚零指令下的运动torch.sum(torch.abs(self.dof_pos - self.default_dof_pos), dim=1) * (torch.norm(self.commands[:, :2], dim=1) < 0.1)
_reward_feet_contact_forces惩罚脚部的高接触力torch.sum((torch.norm(self.contact_forces[:, self.feet_indices, :], dim=-1) - self.cfg.rewards.max_contact_force).clip(min=0.), dim=1)
注意:这是标准的奖励函数,每个机器人都有一些微调的奖励函数,这里就不一一整理了。
4.2 观测和动作通道

观测信息由多个部分拼接而成,包括:

  1. 机器人的线速度 (base_lin_vel)
    通过 obs_scales.lin_vel 进行缩放。
  2. 机器人的角速度 (base_ang_vel)
    通过 obs_scales.ang_vel 进行缩放。
  3. 投影重力 (projected_gravity)
  4. 控制命令的前三个维度
    包括 x 速度、y 速度和偏航速度,通过 commands_scale 进行缩放。
  5. 关节位置相对于默认位置的偏差
    计算方式为 self.dof_pos - self.default_dof_pos,并通过 obs_scales.dof_pos 进行缩放。
  6. 关节速度 (dof_vel)
    通过 obs_scales.dof_vel 进行缩放。
  7. 上一步的动作 (actions)
4.3 动作 (Action)

代码实现中,动作可以被看作是传递给比例-微分控制器(PD 控制器)的位置或速度目标。PD 控制器是机器人控制中常用的方法,它根据当前状态和目标状态(由动作表示)计算需要施加的扭矩,从而使机器人的关节移动到期望的位置或达到期望的速度。

注意: 计算得到的扭矩维度必须与机器人的自由度(DOFs,Degrees of Freedom)数量一致。即使某些自由度没有被驱动(没有对应的执行器控制这些自由度的运动),也必须满足该要求。这是为了确保扭矩向量能够与机器人的每个关节正确对应,以便于后续的控制操作。

_compute_torques 方法中,根据配置文件中 control_type 的不同取值,代码对动作进行了不同方式的处理。

5. 模仿学习 (Imitation Learning)

5.1 工作原理与技术基础

模仿学习是一种通过观察和复制人类或其他专家示范的动作来学习行为的技术。在机器人领域,这种方法极为重要,尤其在复杂动作学习中发挥关键作用。其核心思想可以概括为"看和做"(watch-and-learn):机器人观察人类的运动示范,然后生成相似的运动轨迹。

在这里插入图片描述
5.1.1 算法框架:Motion Matching

传统的Motion Matching最早源于游戏行业,它通过查找动作库中最匹配当前状态的下一个动作来生成连贯动作。而Learned Motion Matching则是其深度学习版本,通常包含三大核心组件:

  • Decompressor(解压器)
    功能:将高维关节状态无损地转换为低维潜在向量表示
    技术实现:通常采用变分自编码器(VAE)或其变体
    数学表示:
    f d e c : R j → R d f_{dec}:R_j \rightarrow R_d fdec​:Rj​→Rd​,其中 j j j是关节空间维度, d d d是潜在空间维度,通常 d ≪ j d \ll j d≪j
  • Stepper(步进器)
    功能:根据当前状态潜在向量预测下一时刻的潜在向量
    技术实现:多层感知机(MLP)或循环神经网络(RNN)、LSTM等
    数学表示:
    f s t e p : R d × R c → R d f_{step}:R_d \times R_c \rightarrow R_d fstep​:Rd​×Rc​→Rd​,其中 c c c是控制信号维度

Projector(投影器)
功能:为Stepper提供初始匹配点和潜在向量,确保生成动作的自然性
技术实现:基于注意力机制的数据库查询
数学表示:
f p r o j : R d × D B → R d f_{proj}:R_d \times DB \rightarrow R_d fproj​:Rd​×DB→Rd​,其中 D B DB DB是预存动作数据库

在这里插入图片描述
5.1.2 数据流程与优化目标

完整的数据流程如下:

  1. 将人类动作数据转换为关节角度序列
  2. 通过Decompressor将关节序列压缩为潜在向量
  3. 利用Stepper预测动作序列的演进
  4. 需要时使用Projector纠正预测偏差
  5. 将预测的潜在向量通过Decompressor的逆过程重建为机器人关节角度
  6. 优化目标通常是最小化以下损失函数:
    L = L r e c o n + λ 1 L s m o o t h + λ 2 L m a t c h L = L_{recon} + \lambda_1 L_{smooth} + \lambda_2 L_{match} L=Lrecon​+λ1​Lsmooth​+λ2​Lmatch​

其中:
L r e c o n L_{recon} Lrecon​:重建损失,确保解压后的动作与原始动作相似
L s m o o t h L_{smooth} Lsmooth​:平滑损失,确保生成的轨迹连续且平滑
L m a t c h L_{match} Lmatch​:匹配损失,确保生成的动作符合物理约束和任务需求

5.2 宇树技术实现猜测----动作重定向技术

将人类动作数据映射到具有不同骨骼结构的机器人上是一个关键挑战。宇树采用的重定向流程主要包括:

  • 骨骼映射:建立人体关节与机器人关节之间的对应关系
  • 空间对齐:确保全局运动(如位移、旋转)正确映射
  • 自由度适配:处理人体与机器人之间的自由度差异
  • 关节限制调整:确保生成的动作符合机器人物理限制

这一过程需要解决一系列逆运动学(IK)问题,通常使用数值优化方法,如:
min ⁡ θ ∥ J ( θ ) p − p t a r g e t ∥ 2 + λ ∥ W ( θ − θ 0 ) ∥ 2 \min_{\theta} \|J(\theta)p - p_{target}\|^2 + \lambda\|W(\theta - \theta_0)\|^2 minθ​∥J(θ)p−ptarget​∥2+λ∥W(θ−θ0​)∥2

其中 θ \theta θ是关节角度, J J J是雅可比矩阵, p p p是终端执行器位置, θ 0 \theta_0 θ0​是默认姿态。

5.3 模仿学习优势与局限性

  • 优势:
    无需大量试错学习,直接从示范中获取知识
    能处理高度复杂的动作,如舞蹈动作、特技表演等
    生成的动作更自然、更符合人类审美
    训练效率较高,无需设计复杂的奖励函数
  • 局限性:
    受限于示范数据的质量和多样性
    难以应对未见过的情境,泛化能力有限
    可能忽略底层物理约束,导致真实环境中的失败
    动作分解与组合能力有限

6. 强化学习 (Reinforcement Learning)

6.1 核心机制与数学基础

强化学习通过智能体在环境中的反复试错来优化决策策略。在机器人动作学习中,强化学习能够学习极其复杂的动态行为,如翻跟头、奔跑和跳跃等。英伟达具身实验室近期公布的ASAP机器人强化学习算法是一个很牛的算法。

在这里插入图片描述
6.1.1 ASAP算法详解

英伟达具身实验室的ASAP(Adversarial Sim-to-Real Adaptation for Policy transfer)算法代表了当前机器人强化学习的前沿。该算法的核心思想是通过三个关键阶段解决模拟到现实的迁移问题:

  • 预训练阶段
    输入:人类动作捕捉数据或视频重建的3D人体运动
    方法:先将SMPL人体模型的运动重定向到机器人模型
    目标:训练一个基本的运动跟踪策略 π θ \pi_{\theta} πθ​,使机器人能在模拟环境中执行类似动作
  • 增量动作模型训练阶段
    输入:在真实机器人上部署预训练策略收集的真实轨迹数据 D r D_r Dr​
    方法:训练一个Delta动作模型 π ϕ Δ \pi_{\phi}^{\Delta} πϕΔ​来补偿模拟与现实之间的差距
    目标:使模拟环境中机器人的行为能够准确预测真实环境中的表现
  • 策略微调阶段
    输入:修正后的模拟环境和预训练策略
    方法:固定增量动作模型参数,微调策略网络
    目标:优化策略使其能在现实环境中表现良好
在这里插入图片描述


和上图一样,基本流程为:

a) 将人类视频转换为 SMPL 动作:首先录制人类表演富有表现力和敏捷动作的视频。使用 TRAM [93],从视频中重建 3D 动作。TRAM 以 SMPL 参数格式 [52] 估计人体运动的全局轨迹,其中包括全局根平移、朝向、身体姿势和形状参数,生成的动作表示为 D / S M P L D/SMPL D/SMPL。

b) 基于模拟的数据清理:由于重建过程会引入噪声和误差 [26],一些估计的运动可能在物理上不可行,使其不适合在现实世界中进行运动跟踪。为了解决这个问题,采用“模拟到数据”清理程序。具体来说,使用基于物理的运动跟踪器 MaskedMimic [86] 来模仿 IsaacGym 模拟器 [58] 中 TRAM 的 SMPL 运动。通过此基于模拟验证的运动将保存为清理后数据集 D C l e a n e d / S M P L D^{Cleaned}/SMPL DCleaned/SMPL。

c) 将 SMPL 运动重定位为机器人运动:使用 SMPL 格式的清理数据集 D C l e a n e d / S M P L D^{Cleaned}/SMPL DCleaned/SMPL,按照形状和运动两阶段重定位过程,将 SMPL 运动重定位为机器人运动 [26]。由于 TRAM 估计的 SMPL 参数代表各种人体形状,首先优化形状参数 β′ 以近似人形。选择 12 个与人类和人形机器人之间具有对应关系的身体链接,对 β′ 执行梯度下降优化,最小化静止姿势下的关节距离。使用优化的形状 β′ 以及原始平移 p 和姿势 θ,应用梯度下降以进一步最小化身体链接的距离。此过程可确保准确的运动重定向,并生成干净的机器人轨迹数据集 D C l e a n e d / R o b o t D^{Cleaned}/Robot DCleaned/Robot。

在这里插入图片描述
6.1.2 PPO算法在复杂动作学习中的应用

近端策略优化(PPO)是强化学习中最常用的算法之一,在宇树开源实现中被广泛应用。其更新规则如下:
L P P O ( θ ) = E t [ min ⁡ ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L_{PPO}(\theta) = E_t[\min(r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t)] LPPO​(θ)=Et​[min(rt​(θ)A^t​,clip(rt​(θ),1−ϵ,1+ϵ)A^t​)]

其中: r t ( θ ) r_t(\theta) rt​(θ)是新旧策略的概率比, A ^ t \hat{A}_t A^t​是优势函数估计,clip操作限制策略更新的幅度,提高训练稳定性

6.2 宇树参照ASAP做的可能的技术创新

6.2.1 非对称Actor-Critic架构

为解决部分可观察问题:

  • Actor网络:仅接收可在真实环境中获取的观测,如IMU数据、关节角度等
  • Critic网络:额外接收模拟环境中的特权信息,如精确的全局位置和速度
    这种架构既提高了训练效率,又确保了部署时不依赖难以获取的信息。
6.2.2 跟踪容错的终止课程

在训练初期,许多复杂动作(如跳跃、翻滚)对策略来说过于困难。所以终止容错课程很重要:
初始阶段:设置宽松的终止条件(如轨迹偏差1.5米内不终止)
中期阶段:逐步减小容错范围(如降至1.0米)
最终阶段:严格限制偏差(降至0.3米)
这种课程设计使策略能够先掌握基本平衡,再逐步精确跟踪目标轨迹。

6.2.3 参考状态初始化(RSI)

一个关键创新是采用参考状态初始化,即:
随机采样时间相位变量 ϕ ∈ [ 0 , 1 ] \phi \in [0,1] ϕ∈[0,1]
根据该相位设置机器人初始状态(位置、方向、速度等)
训练策略从该状态继续执行动作序列
这种方法打破了传统顺序学习的限制,使策略能并行学习动作的不同阶段,大大提高了学习效率。

6.2.4 多层级奖励函数设计

奖励项:用三个项的总和来定义奖励函数 r/t:

  1. 惩罚,
  2. 正则化
  3. 任务奖励。

6.3 宇树参照ASAP做的可能的仿真到现实迁移技术

6.3.1 域随机化

为提高模型在真实环境中的鲁棒性,宇树实现了多层次的域随机化:
物理参数随机化:随机化质量、惯性、摩擦系数等物理参数
传感器随机化:添加传感器噪声和延迟
环境随机化:变化地形高度、硬度和倾斜度
动力学随机化:随机电机响应时间和阻尼特性

6.3.2 Delta动力学建模

Delta动力学模型是弥补模拟与现实差距的关键工具:
数据收集:在真实机器人上执行预训练策略并记录状态-动作对
模型训练:学习一个映射 f Δ : ( s t , a t ) ↦ Δ a t f_{\Delta}: (s_t, a_t) \mapsto \Delta a_t fΔ​:(st​,at​)↦Δat​
模拟器修正:将 Δ a t \Delta a_t Δat​添加到原始动作中,使模拟器行为更接近现实
该模型的训练目标是最小化以下损失:
L Δ = ∥ s t + 1 s i m − s t + 1 r e a l ∥ 2 + λ ∥ Δ a t ∥ 2 L_{\Delta} = \|s_{t+1}^{sim} - s_{t+1}^{real}\|^2 + \lambda\|\Delta a_t\|^2 LΔ​=∥st+1sim​−st+1real​∥2+λ∥Δat​∥2

在G1人形机器人中,经观察发现下肢关节(特别是踝关节)的差异最为显著,这与运动稳定性直接相关。

7. 总结与未来展望

本文详细梳理了宇树开源平台上的主要技术模块,包括从底层硬件平台,到开发工具链,再到顶层算法的设计与实现;同时对强化学习在机器人运动控制中的应用做了系统性分析,并介绍了如何利用LAFAN1重定向数据实现复杂动作学习。整体来看,机器人从数据采集、运动生成、动作学习到仿真-现实迁移的流程,正不断突破传统控制难题,未来通过AI与机器人技术深度融合,人形机器人的敏捷性与表现力将迎来更大提升。

8. 参考链接

https://zhuanlan.zhihu.com/p/1885594346335737231?utm_psn=1885679998192578624

https://zhuanlan.zhihu.com/p/21474703115

Read more

Linux探秘坊-------5.git

Linux探秘坊-------5.git

1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。⽬前最主流的版本控制器就是 Git。Git可以控制电脑上所有格式的⽂件,例如doc、excel、dwg、dgn、rvt等等。对于我们开发⼈员来说,Git最重要的就是可以帮助我们管理软件开发项⽬中的源代码⽂件! 2.git简史 同⽣活中的许多伟⼤事物⼀样,Git诞⽣于⼀个极富纷争⼤举创新的年代。 Linux内核开源项⽬有着为数众多的参与者。绝⼤多数的Linux内核维护⼯作都花在了提交补丁和保存归档的繁琐事务上(

By Ne0inhk

Qwen3-VL-8B开源可部署架构:模块化设计支持前端/代理/推理独立升级与灰度发布

Qwen3-VL-8B开源可部署架构:模块化设计支持前端/代理/推理独立升级与灰度发布 想自己搭建一个功能完整的AI聊天系统,但被复杂的部署流程和臃肿的架构劝退?今天分享的Qwen3-VL-8B开源项目,用模块化设计解决了这个问题。它把整个系统拆成三个独立组件——前端界面、代理服务器、推理后端,每个部分都能单独升级、独立维护,还能实现灰度发布。 我最近在实际项目中部署了这个架构,最大的感受就是“清爽”。传统的一体化部署,改个前端样式都得重启整个服务,现在只需要更新HTML文件就行。代理层挂了?推理服务完全不受影响。这种解耦设计让系统维护变得异常简单。 1. 项目核心:一个真正可维护的AI聊天系统 这个项目不是一个简单的模型调用示例,而是一个生产可用的完整系统。它基于通义千问的视觉语言模型Qwen3-VL-8B,但真正的价值在于其工程架构设计。 1.1 为什么需要模块化? 在AI应用开发中,我们经常遇到这样的问题: * 前端界面需要频繁迭代优化用户体验 * 模型推理服务需要稳定运行,不能随意重启 * API接口需要统一管理,处理认证、限流等逻辑 * 不同组件对资源

By Ne0inhk
GitCode-我的运气的可量化方案-更新v5版本

GitCode-我的运气的可量化方案-更新v5版本

价值是持续创造的,25年的我会持续更新,当前Web版本v4版本,下一个是移动应用版本。 仓库地址:GitCode - AI易经出行 前言 跟GitCode相识还是在25年的1月份的Agent应用开发创新赛中,在这次比赛中荣获银奖的成绩,之后也是经常的使用,并在一些活动中一直在推荐给学生们,分享是一件值得开心的事情,并且分享过后,被分享人通过此次分享获得了一定的荣誉与收获就是一件更为开心的事情了,并且GitCode的WebIDE功能是非常的赞,对于项目快速修正来说实在是非常赞的功能,并且我们还可以通过Spaces的项目功能将我们的项目可以直接在线运行出来看效果,我觉得这是一次飞跃,是开源平台的一个标杆,是一个行位未来独角兽才会出现的行为动作,后面的正文中我会回忆一下我的整个开源项目获奖经历以及使用GitCode平台为学生们创造的价值。 此篇文章是为了对我的项目做一个小小的推广,大家可以利用我当前的思路琢磨出更好的效果,让运气可以进行具体的量化,让我们所有的选择皆是大兴大运,尽可能的做到趋吉避凶,大吉大利。 本次活动主要是流量为主,我也借助本次比赛让更多的人知道这个思路,万一有

By Ne0inhk
Gitee上传代码手把手教会(成功版)

Gitee上传代码手把手教会(成功版)

Gitee上传代码手把手教会(成功版) 注册与准备 在Gitee官网(gitee.com)注册账号并登录。安装Git客户端(Windows可下载Git Bash,Mac/Linux通过终端安装)。 1. 创建仓库 登录Gitee后,点击右上角「+」选择「新建仓库」,填写仓库名称、描述,选择公开或私有,勾选「使用README文件初始化仓库」后点击创建。 2.进入本地你想要上传的文件目录下,右键单击空白处,点击Open Git Bash Here 3.设置全局用户名和邮箱: git config --global user.name "YourName"git config --global user.email "[email protected]&

By Ne0inhk