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
相关推荐
hg01182 小时前
湖南工程机械海外火爆,非洲成为出口新增长极
大数据
YMGogre2 小时前
Git 提交信息规范
git
乐迪信息3 小时前
乐迪信息:异物入侵识别算法上线,AI摄像机保障智慧煤矿生产稳定
大数据·运维·人工智能·物联网·安全
charlie1145141913 小时前
Git团队协作完全入门指南(下)
git
熬夜敲代码的小N3 小时前
从SEO到GEO:AI时代内容优化的范式革命
大数据·人工智能·计算机网络
DX_水位流量监测4 小时前
压力式水位计的技术特性与应用实践
大数据·网络·人工智能·安全·信息可视化
hg01184 小时前
中企承建的突尼斯光伏项目实现商业运营
大数据
豌豆学姐5 小时前
Sora2 能做什么?25 秒视频生成 API 的一次接入实践
大数据·人工智能·小程序·aigc·php·开源软件
躺柒5 小时前
读共生:4.0时代的人机关系02人机合作后
大数据·人工智能·机器人·人机交互·人机协作·人机对话