因为在项目涉及多设备代码同步问题,同一份代码同时存在于笔记本、台式机、工控机上,且在这些平台上都会需要进行代码调试。
而且为了避免在实验设备上调试代码,许多不可控的因素可能导致代码丢失。
因此需要一种平台代码同步和保存的方案。

一、简介

当我们对项目代码进行重大修改时,担心可能修改错误,因此会需要创建多个不同版本的代码文件,因此需要使用Git进行版本管理,实现代码保存和恢复。

  • Git:一个分布式版本控制系统,用于跟踪文件修改、记录历史、实现分支管理。
  • GitHub:基于 Git 的在线代码托管平台,提供远程仓库、权限管理、Issues、PR 等协作功能。

二、使用思路

对于个人开发者而言,可能会需要频繁修改代码,但是如果每次改动都提交到Git,会导致很多问题:

  • 版本管理非常混乱,在多个设备之间很容易出现冲突
  • 恢复时很难找到合适的版本
  • 频繁地提交会产生大量版本信息,仓库容量急剧扩大

Git可以通过分支来解决这个问题,例如每次完成一个阶段性版本,就创建一个分支,用以备份,防止main分支的错误修改导致整个项目代码找不回以前的版本。

具体使用思路如下:

  1. 在 GitHub 创建一个远程仓库(比如 my-project)。
  2. 在笔记本、台式机、工控机等设备上各自以 git clone 拉取同一份仓库。
  3. 每天下班前通过git push 命令将变更推送到 Github。
  4. 每次重大改动(新功能、重构、Bug 修复),都创建一个单独的分支进行备份。
  5. 在另一个设备调试前,进入项目目录,运行 git pull 或针对某个分支的 git fetch && git checkout,迅速获取最新代码。

三、常用操作命令

类别 场景 命令示例
仓库初始化 新项目第一次在本地创建仓库 git init
克隆远程仓库 在新设备或新目录拉取已有项目 git clone https://github.com/用户名/my-project.git
配置身份 第一次使用 Git 时需配置 bash<br>git config --global user.name "Your Name"<br>git config --global user.email "[email protected]"<br>
查看状态 查看哪些文件被修改、哪些文件在暂存区 git status
添加到暂存区 将新文件或修改加入下一次提交 git add filenamegit add .
提交修改 保存当前暂存区的快照 git commit -m "修复登录接口参数校验"
创建分支 在本地创建并切换到新分支 git checkout -b debug
查看分支 列出本地所有分支 git branch -v
切换分支 切换至已有分支 git checkout release
合并分支 将某分支变更合入当前分支 bash<br>git checkout main<br>git merge debug<br>
解决冲突 合并冲突后编辑文件并标记完成 编辑冲突文件 → git add filenamegit commit
标签管理 标记某次重要提交 git tag v1.0.0
删除标签 删除本地或远程标签 bash<br>git tag -d v1.0.0 # 本地<br>git push origin :refs/tags/v1.0.0 # 远程<br>
添加远程仓库 关联本地仓库与 GitHub git remote add origin https://github.com/用户名/my-project.git
推送到远程 将本地分支提交上传到 GitHub git push origin main
拉取远程更新 获取并合并远程仓库最新提交 git pull origin main
恢复文件 未提交时撤销工作区修改 git restore filename
回退版本 已提交后想回到上一个版本 bash<br>git log --oneline # 找到提交哈希id<br>git reset --hard <commit-id> # 回退且丢弃后续改动<br>

(1)创建仓库

场景 命令示例
在本地创建仓库 git init
拉取已有项目 git clone https://github.com/用户名/my-project.git
第一次使用 Git 时需配置 git config --global user.name "Your Name"
git config --global user.email "[email protected]"

(2)文件操作

场景 命令示例
查看项目状态 git status
将修改加入下一次提交 git add filenamegit add .
提交修改到暂存区 git commit -m "修复登录接口参数校验"

(3)恢复文件

场景 命令示例
未提交时撤销工作区修改 git restore filename
已提交后想回到上一个版本 git log --oneline(查版本号)
git reset --hard 上一个版本号(恢复之前版本,删除当前版本)
git reverse 当前版本号(恢复之前版本,保留当前版本)

(4)分支操作

场景 命令示例
在本地创建并切换到新分支 git checkout -b debug
列出本地所有分支 git branch -v
切换至已有分支 git checkout release
将某分支变更合入当前分支 bash<br>git checkout main<br>git merge debug<br>
合并冲突后编辑文件并标记完成 编辑冲突文件 → git add filenamegit commit

(5)标签指令

场景 命令示例
标记某次重要提交 git tag "标签名"
删除本地或远程标签 git tag -d "标签名" # 本地
git push origin :refs/tags/标签名 # 远程<br>

(6)添加远程仓库

场景 命令示例
关联本地仓库与 GitHub git remote add origin https://github.com/用户名/my-project.git
将本地分支提交上传到 GitHub git push
获取并合并远程仓库最新提交 git pull

git pull相当于git fetch+git merge,先下载最新的提交信息和分支,然后尝试合并)

如果使用ssh方式提交,需要生成密钥并添加到远程仓库中。
ssh-keygen -t rsa -C "your [email protected]"

四、多设备备份与同步示例

假设有三个设备:笔记本、台式机和工控机,想要在它们之间共享同一个项目 project1

(1)在 GitHub 上新建仓库

在 GitHub 上点击 New repository,命名为 project1,并记住 HTTPS 克隆地址。

(2)笔记本:初始化与首次推送

1
2
3
4
5
6
7
8
9
10
11
# 进入项目目录
cd ~/projects/project1
# 初始化 Git 仓库
git init
# 关联远程
git remote add origin https://github.com/yourname/project1.git
# 添加所有文件并提交
git add .
git commit -m "Init project structure"
# 推送到 GitHub 主分支
git push -u origin main

(3)台式机:克隆并开发新功能

第一次:

1
2
3
4
5
6
7
8
9
# 克隆仓库
git clone https://github.com/yourname/project1.git
cd project1
# 修改代码,完善功能
# ...
git add .
git commit -m "Add Functions"
# 推送分支到远程
git push

后续:

1
2
3
4
5
6
7
8
# 拉取代码
git pull
# 修改代码
# ...
# 推送代码
git add .
git commit -m "Add Functions"
git push

(4)工控机:拉取最新代码

第一次:

1
2
3
4
# 克隆代码
git clone https://github.com/yourname/project1.git
cd project1
# 进行测试

后续使用:

1
2
3
4
5
6
7
8
# 拉取代码
git pull
# 修改代码
# ...
# 推送代码
git add .
git commit -m "Add Functions"
git push

(5)分支管理

当功能验证完成后,在任意一台主机上:

1
2
git checkout v0.1.0
git push

这样,无论在哪台设备上,始终可以通过 git pull 或切换分支,快速同步和恢复项目状态。分支与标签配合远程仓库,就能让多设备开发既高效又安全。

附:Github客户端 / IDE集成Git工具

虽然Git命令能实现很多功能,但是对于刚接触Git的使用者而言,使用Github的官方客户端工具,或者在VSCode中集成的Git工具是更好地选择,同样能够实现上面的所有功能,但是更加直观。