Git 版本管理教程

rl_training 项目为例,讲解 Git 核心操作流程

任务一:本地上传到 GitHub(含分支管理)

1.1 首次上传项目

Step 1: 在 GitHub 创建空仓库
  1. 登录 github.com
  2. 点击右上角 +New repository
  3. 输入仓库名(如 rl_training
  4. ⚠️ 不要勾选任何初始化选项(保持仓库为空)
  5. 点击 Create repository
Step 2: 本地初始化并推送
powershell 复制代码
# 进入项目目录
cd F:\codespace\Lite3\rl_training

# 初始化 Git 仓库
git init

# 添加所有文件
git add .

# 首次提交
git commit -m "Initial commit"

# 设置主分支名为 main
git branch -M main

# 关联远程仓库
git remote add origin git@github.com:你的用户名/rl_training.git

# 推送到 GitHub
git push -u origin main

1.2 分支管理

查看分支
powershell 复制代码
# 查看本地分支(*号表示当前分支)
git branch

# 查看所有分支(包括远程)
git branch -a
创建分支
powershell 复制代码
# 创建新分支
git branch 分支名

# 创建并切换到新分支(推荐)
git checkout -b 分支名

# 示例:创建 biped 分支
git checkout -b biped
切换分支
powershell 复制代码
# 切换到指定分支
git checkout 分支名

# 示例
git checkout main
git checkout biped
推送分支到远程
powershell 复制代码
# 首次推送新分支(建立追踪关系)
git push -u origin 分支名

# 后续推送
git push
删除分支
powershell 复制代码
# 删除本地分支(需先切换到其他分支)
git branch -d 分支名

# 强制删除(未合并的分支)
git branch -D 分支名

# 删除远程分支
git push origin --delete 分支名

1.3 日常更新代码

powershell 复制代码
# 1. 确认当前分支
git branch

# 2. 查看修改状态
git status

# 3. 添加修改
git add .

# 4. 提交
git commit -m "描述本次修改内容"

# 5. 推送
git push

1.4 完整工作流示例

powershell 复制代码
# 场景:在 biped 分支上开发新功能

# 1. 切换到 biped 分支
git checkout biped

# 2. 修改代码后,查看状态
git status

# 3. 添加所有修改
git add .

# 4. 提交
git commit -m "添加双足步态控制功能"

# 5. 推送到远程
git push

任务二:从远程分支拉取代码(强制覆盖本地)

适用场景:在另一台电脑(如训练服务器)上,需要获取 GitHub 上某个分支的最新代码,本地重名文件直接被远程版本覆盖

2.1 方法一:全新克隆(推荐首次使用)

powershell 复制代码
# 克隆仓库
git clone git@github.com:你的用户名/rl_training.git

# 进入目录
cd rl_training

# 切换到目标分支
git checkout 分支名

2.2 方法二:fetch + reset(强制覆盖本地)⭐

⚠️ 警告:此操作会丢弃本地所有未提交的修改!

powershell 复制代码
# 1. 获取远程最新信息
git fetch origin

# 2. 切换到目标分支(如果不在该分支)
git checkout 分支名

# 3. 强制重置本地分支到远程版本(覆盖所有本地文件)
git reset --hard origin/分支名
实际示例
powershell 复制代码
# 场景:把本地 biped 分支强制同步为远程最新版本

git fetch origin
git checkout biped
git reset --hard origin/biped

2.3 方法三:清理未跟踪文件

如果需要同时删除本地多余的文件(远程没有的文件):

powershell 复制代码
# fetch + reset 后,清理未跟踪的文件和目录
git fetch origin
git checkout 分支名
git reset --hard origin/分支名
git clean -fd
参数 说明
-f 强制删除
-d 包括目录
-n 预览(不实际删除,先看看会删什么)

2.4 命令对比

命令 作用 本地修改
git pull 拉取并合并 保留,可能产生冲突
git fetch + git reset --hard 强制同步 丢弃,完全覆盖
git clone 全新克隆 不适用(新目录)

2.5 完整工作流示例

powershell 复制代码
# 场景:服务器上同步 GitHub 的 biped 分支最新代码

# 1. 进入项目目录
cd ~/rl_training

# 2. 获取远程更新
git fetch origin

# 3. 查看当前分支
git branch

# 4. 切换到 biped(如果不在)
git checkout biped

# 5. 强制覆盖本地(重名文件会被替换)
git reset --hard origin/biped

# 6. (可选)清理远程没有的多余文件
git clean -fd

# 7. 确认状态
git status
# 输出应该是:nothing to commit, working tree clean

环境准备

安装 Git

Windows:

powershell 复制代码
winget install Git.Git
# 或下载安装: https://git-scm.com/download/win

Linux (Ubuntu):

bash 复制代码
sudo apt update && sudo apt install git

配置用户信息

bash 复制代码
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱@example.com"

SSH 密钥配置(推荐)

powershell 复制代码
# 1. 生成密钥
ssh-keygen -t ed25519 -C "你的邮箱@example.com"

# 2. 查看公钥
cat ~/.ssh/id_ed25519.pub

# 3. 将公钥添加到 GitHub
#    Settings → SSH and GPG keys → New SSH key

# 4. 测试连接
ssh -T git@github.com

注意:每台电脑/服务器都需要单独生成密钥并添加到 GitHub。


常见问题

Q1: 推送被拒绝 (rejected)

复制代码
! [rejected] main -> main (fetch first)

原因:远程有更新,本地落后了。

解决

powershell 复制代码
# 方法1:拉取合并后再推送
git pull origin main
git push

# 方法2:强制推送(会覆盖远程,谨慎!)
git push -f

Q2: 如何查看远程分支

powershell 复制代码
# 更新远程分支信息
git fetch origin

# 查看所有远程分支
git branch -r

Q3: 切换分支时提示有未提交的修改

powershell 复制代码
# 方法1:提交修改
git add .
git commit -m "保存当前修改"

# 方法2:暂存修改(稍后恢复)
git stash
git checkout 其他分支
# 回来后恢复
git stash pop

# 方法3:丢弃修改
git checkout -- .

Q4: 如何撤销最近一次提交

powershell 复制代码
# 撤销提交,保留修改
git reset --soft HEAD~1

# 撤销提交,丢弃修改
git reset --hard HEAD~1

速查表

操作 命令
初始化仓库 git init
添加文件 git add .
提交 git commit -m "说明"
推送 git push
拉取 git pull
查看分支 git branch
创建并切换分支 git checkout -b 分支名
切换分支 git checkout 分支名
获取远程更新 git fetch origin
强制同步远程 git reset --hard origin/分支名
查看状态 git status
查看历史 git log --oneline
相关推荐
edisao39 分钟前
一。星舰到底改变了什么?
大数据·开发语言·人工智能·科技·php
昨夜见军贴06161 小时前
AI审核的自我进化之路:IACheck AI审核如何通过自主学习持续提升检测报告审核能力
大数据·人工智能
冬至喵喵1 小时前
二进制编码、base64
大数据
H Journey1 小时前
Git 教程
git
coding-fun2 小时前
电子发票批量提取导出合并助手
大数据·数据库
墨香幽梦客2 小时前
家具ERP口碑榜单,物料配套专用工具推荐
大数据·人工智能
悟纤3 小时前
Suno 爵士歌曲创作提示整理 | Suno高级篇 | 第22篇
大数据·人工智能·suno·suno ai·suno api·ai music
yl45303 小时前
污泥清淤机器人实践复盘分享
大数据·人工智能·机器人
B站计算机毕业设计超人3 小时前
计算机毕业设计Python+百度千问大模型微博舆情分析预测 微博情感分析可视化 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hive·hadoop·python·毕业设计·知识图谱·课程设计
irizhao4 小时前
《高质量数据集 分类指南》解读(TC609-5-2025-03)由全国数据标准化技术委员会发布
大数据·人工智能