文章目录
Note: 本文具有极强的个人备忘属性,不是 Git 的通用教学,旨在以极简的方式备忘日常 git 工作流程。
个人版本控制使用场景:会持续迭代开发,但是不会经常回看历史版本,但又会在某些 debug 的时候回看某个历史版本,暂时不想花费过多时间学习工具高级用法。
1. Git 入门
1.1 学习资料
1.2 Git 仓库中文件的四种状态
理解 工作空间,暂存区,git 库, 三者的区别与联系。
Untracked
- 在空间中,没加入 git 库,不参与版本控制,通过 git add 变为 Staged。Unmodify
- 已经入库,未修改,两个去处:修改或删除 git rm。Modified
- 已修改,两个去处:暂存 Staged 或回退 git checkout。Staged
- 暂存状态,两个去处,提交 git commit 或取消暂存 git reset HEAD filename。
1.3 Git 基础命令学习
-
add
添加命令git add . # 全部上 stage
-
commit
提交命令git commit -m "xxx" # 提交一次到本地仓库,并附加说明。
-
checkout
- 切换命令# 修改,没有 add 的情况下 (未上 stage) git checkout --<file> # 直接撤销修改 # 修改,add 后,但没修改 (上 stage 后没动) git reset <file> # 撤销 add 操作 git checkout --<file> # 撤销修改 # 修改,add 后,又修改了 (上 stage 后动了) git checkout --<file> # 撤销最新修改,保持和 stage 一致 git reset <file> # 撤销 add 操作 git checkout --<file> # 撤销第一次修改
-
reset
- 重置命令git reset # 撤销 staged 的修改
-
status
- 状态命令git status # 查看当前仓库状态
1.4 gitignore 文件
-
用于声明不需要进行版本控制的文件,在 Gitee 上提供了很多模板,注意选择即可。
# 注释 ! 例外
2. Git 仓库使用流程备忘
本节旨在梳理
普通的
和基于ROS
的两种类型的项目,利用 Gitee 私有仓库和 git 进行版本控制的流程。
2.1 Git 首次使用的初始化配置
-
初始化全局用户名和邮箱地址
git config --global user.email "you@example.com" git config --global user.name "Your Name" git config --global core.editor gedit
-
注册 Gitee,并添加本地机器的 SSH 公钥,复制里面的公钥添加到 Gitee 个人设置中。
ssh-keygen # 一路回车,全默认 gedit ~/.ssh/id_rsa.pub
2.1 普通的 Git 仓库工作流程
简洁的流程:在 Gitee 上创建空仓库,clone 下来,修改-提交-推送。
-
远程仓库
-
在 Gitee 上新建一个空仓库,于是就有个仓库的地址,在本地 clone 下来,由于已经配置了 SSH 公钥,注意选择
SSH clone
。git clone git@gitee.com:user_name/your_repo.git
-
-
本地仓库
-
克隆后,创建或从别的地方复制代码或文件过来,然后添加、提交、推送一条龙即可。
git add . git commit git push
-
2.2 基于 ROS 的仓库工作流程
-
远程仓库,大同小异,关键点是选择好 ROS 的 gitignore 文件,并不需要控制很多编译文件。
-
本地仓库,将远程仓库克隆下来,目前是个空仓库,然后用 ROS 的那一套操作,初始化工作空间。
mkdir src && cd src catkin_init_workspace cd .. && catkin_make
-
然后把功能包拷贝或写出来,编译,确认第一个版本没啥问题,就提交,还是老三样。
git add . git commit git push
3. 日常 Git 操作
3.1 IDE + 插件
-
应对普通 C++/python 项目
:利用 Clion 或 Pycharm ,同时网上有现成的 JetBrain 系列的 gitignore 文件,只控制源码版本,很方便,JetBrain 的 IDE 内部也集成了 git 环境,对比很方便。 -
应对 ROS 项目
:VSCode + git 插件,方便对比版本。 -
日常 commit & push
: 仍然喜欢使用命令行来 add,commit,push 三件套,清晰方便,对于个人小型项目开发来说,可能不需要或需要很少的 branch,因此这三句是日常最多使用的命令。