当前位置:首页 > 技术 > 正文内容

Linux 环境下 Git 版本控制核心指令手册

访客 技术 2026年7月17日 1

仓库初始化与权限设置

在基于 Linux 的嵌入式研发环境中,Git 是管理代码版本的关键工具。首要步骤是构建中心化的裸仓库,该仓库仅包含版本数据库而无工作目录:

git init --bare embedded_project.git

为了保证团队协作时的读写权限,需要修正文件所有者,使其归属于 Git 用户组:

sudo chown -R git:git embedded_project.git

克隆与本地化

开发者将服务器上的镜像同步到个人工作站:

git clone ./embedded_project.git

系统会自动生成一个同名目录,后续所有的代码操作均需在该项目根目录下执行。

变更追踪与管理

状态查询与比对

完成代码编辑(例如修改 device_driver.c)后,使用状态命令检查当前环境:

git status .

若需确认具体的代码差异细节,可调用 diff 工具进行逐行比对:

git diff device_driver.c

暂存变更

校验通过后,将修改纳入暂存区。可以针对指定文件进行操作:

git add kernel_init.c

也可以同时指定多个文件:

git add config.h utility_lib.c

对于已存在于版本库的文件,使用更新模式只收录其变更部分:

git add -u

或者一键收录当前目录下的所有新增及修改:

git add ./

取消暂存

如果发现误提交了某些文件到暂存区,可以使用重置命令将其移除,此时不影响工作区的代码内容:

# 现代推荐写法
git restore --staged target_module.c
# 传统通用写法
git reset HEAD target_module.c

本地快照提交

待暂存区准备就绪,执行提交动作生成永久记录:

git commit -m "完成传感器数据读取接口"

如果在提交后发现注释错误或代码逻辑有误,且尚未推送到远程端,可根据需要选择回退方式:

  • --soft:撤销提交,保留暂存区,适合继续补充修改。
  • --mixed:撤销提交,移出暂存区,代码改动仍在工作区。
  • --hard:强力撤销,提交和代码改动全部丢失,需谨慎。

示例操作:

git reset --soft HEAD~1
git reset --hard HEAD~1

语义化提交规范

为了便于历史检索与版本回溯,建议采用结构化的 Commit Message 格式:<type>(<scope>): <subject>

Type
包括 feat (新特性)、fix (Bug 修复)、docs (文档)、style (格式调整)、refactor (重构)、perf (性能优化)、test (测试)、chore (构建/工具)。
Scope
描述受影响的模块,如 network, ui, db。若涉及全局则用 *
Subject
简述变动内容,使用祈使语气,小写开头,句末不加标点。

正确示例:

feat(auth): 实现 OAuth2 登录流程
fix(view): 修正列表渲染时的高亮样式错误

分布式协作

将本地分支推送到远程服务器:

git push origin stable_branch

获取上游分支的最新更新并合并到本地:

git pull origin mainline

在复杂分支场景下,也可先切换分支再进行同步:

git checkout experimental
git pull origin experimental

历史版本回滚

首先通过日志查找特定的提交哈希值:

git log --oneline --graph

若要回退整个工作区到某个历史节点:

git checkout f4a2b1c

如果只是某个文件出了问题,想恢复到上一次提交的状态:

git checkout HEAD -- problematic_file.cpp

恢复主分支最新版时,若有未处理的冲突,需先清理现场:

git checkout -- .
git checkout main

版本标签维护

Git 提供标签功能用于标记重要的发布版本。例如标记为 v2.3.0

git tag v2.3.0

将标签上传至远端仓库:

git push origin v2.3.0

如果需要批量推送所有本地标签:

git push --tags

获取最近的版本标签名称:

git describe --tags --abbrev=0

删除本地不需要的标签:

git tag -d v2.3.0
标签: git

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。