news 2026/7/24 22:28:37

Git基础——add/commit/push/branch的正确使用姿势

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git基础——add/commit/push/branch的正确使用姿势

面试的时候被问过一个问题:"你平时怎么管理代码?"我当时脑子一抽,说了句"用U盘备份"。面试官笑了,我也笑了。但那个笑,比挂了还难受。

后来才知道,Git是机器人开发团队里最基础的工具,没有之一。不管你是做算法的还是搞嵌入式的,不会Git基本上就没法进团队。今天就把Git最核心的几个操作掰开了讲,让你面试的时候不再心虚。

git init和git clone:从零开始

两种情况。一种是你有个新项目,啥都没有:

mkdir my_robot_project cd my_robot_project git init

这时候当前目录就变成了一个Git仓库。Git会在里面创建一个.git隐藏文件夹,用来跟踪所有变更。

另一种是团队已经有现成的仓库了,你需要把它拉下来:

git clone git@github.com:team/robot_project.git

这行命令会在本地创建一份完整副本,包括所有历史记录。注意,不是只拿最新版本,是全部历史都拿。这就是分布式版本控制的核心思想。

clone下来之后,你会看到一个.git目录。别碰它。删了它你就丢失了所有版本历史。

git add和git commit:最基本的提交

改完代码之后,第一步是告诉Git"我改了哪些文件":

git status # 看看哪些文件变了 git add main.cpp # 把main.cpp加入暂存区 git add src/ # 把src目录下所有改动都加入 git add . # 把所有改动都加入(慎用)

git add这一步很关键。它不是提交,只是告诉Git"这些改动我准备提交了"。你可以选择性地只add一部分文件,比如你改了两个bug,但只想先提交其中一个。

然后是真正的提交:

git commit -m "修复了激光雷达数据解析的bug"

commit message写清楚,这是给未来的自己看的。别写"fix bug"这种废话,过一个月你自己都不知道fix了啥。

有个实用技巧:git add -p。这个命令可以按代码块(hunk)来添加,而不是整个文件。比如你改了一个文件里的两处代码,只想提交其中一处,用-p就能精确选择。面试的时候提到这个,面试官会觉得你是真用过Git的。

.gitignore:别把不该提交的东西传上去

每个项目根目录都应该有个.gitignore文件。它告诉Git哪些文件不需要跟踪。

典型的机器人项目.gitignore:

build/ devel/ install/ *.pyc .vscode/ *.swp core_dump

编译产物、IDE配置、Python缓存文件,这些都不应该提交。我之前见过一个实习生把整个build目录都commit进去了,几万个文件,仓库直接膨胀到2个G。后来花了好大力气才从历史里清掉。

git branch:分支的正确用法

分支是Git最强大的功能。你可以把它理解为"平行宇宙"——在主线之外开一条线,随便改,改好了再合并回去。

git branch # 查看所有分支 git branch feature_lidar # 创建新分支 git checkout feature_lidar # 切换到该分支 git checkout -b feature_lidar # 创建并切换(上面两步合一)

在机器人项目里,常见的分支策略是这样的:main分支永远是稳定可发布的版本,develop是日常开发的主线,然后每个功能或者bugfix单独开一个分支。比如你要加一个IMU驱动,就开个feature_imu_driver分支,开发完了再合并回develop。

千万别在main分支上直接改代码。这不是小项目两三个人随便搞搞的时代了,正经团队都有分支规范。

git push和git pull:远程同步

本地commit之后,代码还在你自己电脑上。要推到远程仓库让团队看到:

git push origin feature_lidar # 把本地分支推到远程 git push -u origin feature_lidar # 第一次push时加-u,建立追踪关系

-u这个参数只在第一次用。之后直接git push就行了,Git已经记住了你要推到哪里。

从远程拉取更新用git pull:

git pull origin develop

这其实是两个操作的组合:先从远程下载(fetch),再合并到本地(merge)。

这里有个新手常踩的坑:你在本地改了代码,同事也改了,你pull的时候就会冲突。冲突不可怕,后面会专门讲。但你要养成一个习惯——开始工作前先pull一下,保持本地和远程同步,能减少很多不必要的冲突。

git log和git diff:查看历史

git log # 查看提交历史 git log --oneline # 简洁模式,一行一个commit git log --graph # 图形化显示分支合并 git diff # 查看当前改动和上次commit的差异 git diff HEAD~1 # 查看和上一个commit的差异

git log --oneline --graph --all这个组合命令特别好用,能看到整个项目的分支历史全貌。排查问题的时候特别有用。

机器人开发中的Git实践

在机器人项目里,Git的使用有一些特殊注意事项。

大文件问题。机器人项目经常涉及数据集、模型文件、地图文件这些动辄几百MB的东西。直接提交到Git里会让仓库变得巨大。解决办法是用Git LFS(Large File Storage):

git lfs install git lfs track "*.pcd" git lfs track "*.bag"

这样大文件会被LFS管理,不会撑爆仓库。

多语言混合项目。一个典型的机器人项目可能同时有C++、Python、Launch文件、配置文件。建议按功能模块组织目录结构,而不是按语言分。这样在分支管理的时候,一个功能的改动集中在一个目录里,review起来方便。

编译缓存。ROS项目的编译时间很长,有时候编译产物会不小心被Git跟踪。一定要在.gitignore里排除build/、devel/、install/这些目录。

面试中怎么聊Git

面试官问Git,通常不是让你背命令。他们想看的是:你有没有在真实项目中用过,有没有遇到过问题,怎么解决的。

你可以这样回答:"我们项目用Git Flow的分支模型,main是稳定版本,develop是开发主线。每个功能开feature分支,开发完提PR做code review。有一次我push了一个commit把编译产物也提交进去了,仓库从50M涨到800M,后来用git filter-branch从历史里清掉的。从那以后我特别重视.gitignore的配置。"

这种回答比背十个命令都有说服力。因为它说明你真的用过,真的踩过坑,真的解决了问题。

Git分支管理的实战经验

在实际项目中,Git分支管理策略很重要。一个简单有效的策略是:main分支始终保持可发布状态,开发在feature分支上进行,完成后通过PR合并。常见的错误包括:在main上直接修改、忘记拉取远程更新就push、解决冲突时不小心覆盖别人的代码。一个实用的习惯是每次开始工作前先git pull --rebase,保持本地分支干净。

补充一个实用技巧:git log --oneline --graph --all 可以可视化查看完整的分支历史,排查问题时特别方便。另外git diff --stat可以快速了解一次提交改了多少文件。

掌握这些Git技巧,团队协作效率会大幅提升。

给你的建议

多练。Git这东西光看不用根本学不会。自己建个仓库,随便改改提交提交,练练分支合并,比看十篇文章都管用。

记住几个核心概念就够了:工作区、暂存区、仓库。git add是从工作区到暂存区,git commit是从暂存区到仓库。理解了这个流程,很多命令就不会搞混。

还有,commit message认真写。这不是给面试官看的,是给半年后的自己看的。到时候你看到一条"fix"的commit,绝对想穿越回去打人。


上一篇:第97篇 Docker进阶——多容器编排和机器人仿真环境搭建

下一篇预告:第99篇 Git进阶——rebase/cherry-pick/stash的实战场景

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 22:25:55

移动端 NPC 行为推理的端侧部署:从模型裁剪到 TFLite 落地

移动端 NPC 行为推理的端侧部署:从模型裁剪到 TFLite 落地 一、把大脑搬进手机:NPC 智能为何要上端侧 把 NPC 的决策交给云端大模型,延迟与成本都扛不住。一场战斗里数十个 NPC 每帧都要做取舍,网络往返一次就是几百毫秒&#x…

作者头像 李华
网站建设 2026/7/24 22:24:49

嵌入式数据采集终端工控主板怎么选?低功耗与宽温适配核心参数

一、为什么数据采集终端的主板选型不能只看性能?在工业物联网、环境监测、智慧水务、能源电力等领域,嵌入式数据采集终端承担着前端感知数据汇聚、预处理与上传的核心角色。很多工程师选型时第一反应是"CPU性能够不够",但小编认为&…

作者头像 李华
网站建设 2026/7/24 22:23:04

5分钟掌握AI成本控制:TikTokenizer在线分词器终极指南

5分钟掌握AI成本控制:TikTokenizer在线分词器终极指南 【免费下载链接】tiktokenizer Online playground for OpenAPI tokenizers 项目地址: https://gitcode.com/gh_mirrors/ti/tiktokenizer 你是否曾经在使用ChatGPT、GPT-4等AI模型时,对账单上…

作者头像 李华
网站建设 2026/7/24 22:22:57

VLA-世界模型-TVA:具身智能的递归改进引擎(2)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

作者头像 李华
网站建设 2026/7/24 22:22:26

工业大模型工业问题推理能力提升:从物理状态推演到长链路逻辑闭环的技术演进深度解析

当前,工业大模型的发展正处于从“语言交互”向“物理状态交互”跨越的关键节点。截至2026年7月,工业大模型工业问题推理能力提升已不再单纯依赖于参数规模的扩张,而是转向了对行业机理、专业数据质量及复杂逻辑验证能力的深度挖掘。传统的通用…

作者头像 李华