Git+Github的代码备份与多设备同步
因为在项目涉及多设备代码同步问题,同一份代码同时存在于笔记本、台式机、工控机上,且在这些平台上都会需要进行代码调试。
而且为了避免在实验设备上调试代码,许多不可控的因素可能导致代码丢失。
因此需要一种平台代码同步和保存的方案。
一、简介
当我们对项目代码进行重大修改时,担心可能修改错误,因此会需要创建多个不同版本的代码文件,因此需要使用Git进行版本管理,实现代码保存和恢复。
- Git:一个分布式版本控制系统,用于跟踪文件修改、记录历史、实现分支管理。
- GitHub:基于 Git 的在线代码托管平台,提供远程仓库、权限管理、Issues、PR 等协作功能。
二、使用思路
对于个人开发者而言,可能会需要频繁修改代码,但是如果每次改动都提交到Git,会导致很多问题:
- 版本管理非常混乱,在多个设备之间很容易出现冲突
- 恢复时很难找到合适的版本
- 频繁地提交会产生大量版本信息,仓库容量急剧扩大
Git可以通过分支来解决这个问题,例如每次完成一个阶段性版本,就创建一个分支,用以备份,防止main分支的错误修改导致整个项目代码找不回以前的版本。
具体使用思路如下:
- 在 GitHub 创建一个远程仓库(比如
my-project)。 - 在笔记本、台式机、工控机等设备上各自以
git clone拉取同一份仓库。 - 每天下班前通过
git push命令将变更推送到 Github。 - 每次重大改动(新功能、重构、Bug 修复),都创建一个单独的分支进行备份。
- 在另一个设备调试前,进入项目目录,运行
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 filename 或 git 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 filename → git 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 filename 或 git 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 filename → git 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 | 进入项目目录 |
(3)台式机:克隆并开发新功能
第一次:
1 | 克隆仓库 |
后续:
1 | 拉取代码 |
(4)工控机:拉取最新代码
第一次:
1 | 克隆代码 |
后续使用:
1 | 拉取代码 |
(5)分支管理
当功能验证完成后,在任意一台主机上:
1 | git checkout v0.1.0 |
这样,无论在哪台设备上,始终可以通过 git pull 或切换分支,快速同步和恢复项目状态。分支与标签配合远程仓库,就能让多设备开发既高效又安全。
附:Github客户端 / IDE集成Git工具
虽然Git命令能实现很多功能,但是对于刚接触Git的使用者而言,使用Github的官方客户端工具,或者在VSCode中集成的Git工具是更好地选择,同样能够实现上面的所有功能,但是更加直观。

