文章目录
前言
git网上资料太多了,何况还有AI,使用起来已经不是个难事。
但是git代码管理的操作,会存在因为merge不当,导致代码丢失,难以找回的情况。
所以我认为还是要讲一下,就讲清楚git的一个工作流,作为同事的操作手册使用。
本文会先讲一下git的基本概念,然后梳理一个简单工作流供同事使用,之后再强调一些绝对不要做的事项,防止破坏项目代码。
同时,其中的【你们】特指我的同事。
一、基本概念
因为git是使用命令行操作,就导致了很多人虽然使用git,但是一直没搞懂git是什么,只是按照几个命令机械的使用。
我认为还是有必要解释一下。
起始git就是一个软件,只是没有图形化界面。
git clone之后,下载的内容,就是git这个软件对应可以使用的文件格式。
就像word能打开和操作.doc文件一样。
后面所使用的命令,就是用git这个软件,对这个文件进行操作。
二、简单工作流(你们就看这个)
会给你们发咱们公司的代码库网址,我会给你们拉进项目群组中,你们登录进去之后,就会看到咱们的整个农机的项目代码库。
咱们代码框架都是在ros2下面搭的,所以你们要先在自己的电脑上面新建一个文件夹,然后文件夹里面再建一个src文件。
然后在src文件中执行:
javascript
git clone https://example.com/repo.git
这个网址我会给你们
这一步就将我们的项目所有代码都下载下来了。
然后你们就对应的改你们那部分的代码。
目前应该你们的任务有局部路径规划,套圈式全覆盖路径规划,底盘重构等。
局部路径原本就有这个模块,你用你写的替换就行。
套圈的全覆盖路径规划等,之前没有的模块,你就把整个功能包给复制进去。
然后你们改完之后,就可以进行提交代码了,这个分为两步。
第一步是添加:
javascript
git add .添加当前目录和子目录的全部修改,你改的是局部路径模块,就在局部路径模块的那个功能包文件夹下运行这个。
git add 文件名 单独添加文件
添加这步就是告诉git,等会要提交的是哪个。
第二步就是提交:
javascript
git commit -m "提交信息"
里面的提交信息,就是你自己编辑一下,比如说 新增绕障功能 等,这个最后会在git项目里面显示,当然,详细的修改日志还是需要你写进对应的.md里面。
这个提交,可不是说提交到远程仓库了,而是提交给你的本地的git软件,就是告诉git,这些就是我之后要上传远程仓库的东西。
最后,你们就可以将修改的代码推到咱们的git仓库了。
这一步是最重要的!
javascript
git push origin <分支名>
这个分支名之后我也会告诉你们
这个分支名一定要用我给你们的,否则会搞乱代码,一定切记。
每个部分我都会创建对应的分支,你们每部分修改的代码我都会告诉你们对应的分支。
绝对不要私自合并代码,你们各自要在我指定的分支中操作。
再补充一个切换当前分支的某个版本。
假如你在你的分支中,前后commit了五次,然后发现自己想在第二次上传的版本上进行重新开发。
如何切换到第二次上传的版本,一共分为两步:
首先是查看你的提交历史:
javascript
# 查看提交历史,找到第二次提交的哈希值
git log --oneline
# 输出示例:
# c3a8b2e (HEAD) 第三次提交:优化性能
# b5f6d7a 第二次提交:添加新功能
# a1b2c3d 第一次提交:初始功能
# ↑ 你需要的是 b5f6d7a(第二次提交)
然后切换到对应的历史版本上:
javascript
# 正确:切换到历史版本(进入"分离HEAD"状态)
git checkout <哈希值>
# 示例:
git checkout b5f6d7a
# 你现在就在第二次提交的代码状态
这里注意一下,只要commit过的就算历史版本,你就可以随时切换到这个历史版本。
三、绝对不要做的事
javascript
# ❌ 不要在主分支操作
git checkout main # 除非有特别指示
git checkout master # 不要!
# ❌ 不要私自合并分支
git merge other-branch # 绝对不要!
# ❌ 不要强制推送
git push --force # 会破坏别人代码
# ❌ 不要在错误的分支提交
# 每次提交前检查:
git branch # 确认你在正确的分支
# ❌ 不要git init
咱们绝对不会用这个命令
四、常用命令速查
git status 查看状态
git checkout <分支> 切换分支
git reset --soft HEAD~1 撤销提交(保留修改)
总结
补充一下,正常工作流,需要每天都push代码,我好检查你们每天的工作量,但目前还不做这些强制要求。