跳转至

Git Graph 插件使用说明

Git Graph 插件自带可视化操作能力,虽然功能不及 Fork 这类独立客户端完善,但最突出的优势是深度集成于 VS Code,无需切换软件窗口就能够完成代码提交等一系列 Git 操作。

alt text

暂存

在 VS Code 左侧菜单栏,点击树枝样式的源代码管理图标,面板内会展示出当前项目所有发生改动的文件。点击文件后方的加号,即可将改动添加至暂存区(Stage),完成改动的临时存放。

提交

当文件改动完成暂存之后,就可以执行提交(Commit)操作,将改动保存到本地仓库。 提交时需要说明本次修改的目的、改动内容以及实现效果:在源代码管理面板上方的蓝色提交输入区域,先填写提交标题,换行之后再补充改动的详细内容与效果描述。填写完毕点击提交按钮,本次改动就会生成一条本地版本记录。

一份规范的提交示例:

1
2
3
4
5
6
refactor(docs): 统一将所有文件名改为小写

- 使用 git mv 两步重命名,解决 Windows 大小写不敏感问题
- 同步更新 mkdocs.yml nav 中的文件路径引用
- 共涉及 19 个文件重命名
- 修复 Fork Git操作.md 因大小写不一致导致的 404 问题

上述示例属于多人协作工程中需要遵循的标准化提交规范。如果你仅用于个人私有项目,不必严格遵守该格式,可以按照自己的习惯编写提交信息。

  • 如果你在做深度学习项目,提交标题可以概括本次改动方向;详情部分记录修改的模块、调整的参数、训练精度提升幅度等信息,再对当前版本执行提交。后续每一次重大改动或是精度提升等有意义的更新,都建议生成一次提交。

个人建议:在提交的时候,可以直接在提交内容里加上此次训练结果或训练精度输出的具体结果文本,结果图片的文件名和路径,方便查找各个更改历史版本的训练结果。

  • 这样当后续代码修改出错、出现严重问题时,你就可以随时回退到之前稳定的版本,这也是使用 Git 进行版本管理的核心意义。版本回退的具体操作可以参考文档:查看 fork 教程

推送

完成提交后,你随时可以回退到改动之前或者保留当前的修改状态。需要注意:此时所有改动仅仅保存在本地电脑,还没有上传至远程云端仓库。 点击 VS Code 左下角的同步循环图标,即可将本地提交推送到云端;如果你使用 GitHub,上传过程中可能需要开启加速器或代理。 左下角 main 字样代表你当前工作在主分支,右侧的分支图标可以查看、切换项目现有的所有分支,查看 Git 当前状态。

alt text

推送有两层核心意义:

  1. 云端备份:本地提交仅存于电脑,推送至云端后,即便本地磁盘损坏、文件丢失,代码也可以从远程仓库重新拉取恢复。
  2. 多人协作:大型项目通常由数十、上百人共同开发,所有人都可以将改动提交至云端仓库,不同人员负责不同功能模块。这类项目一般会采用多分支开发模式。

  3. Git 的版本结构可以类比成一棵树。单人开发项目可以只使用一条主干分支,每一次有意义的更新提交,都会在这条枝干上新增一个版本节点。

  4. 多人协作场景下,一般会从主干上新开一条功能分支,你所有的改动都在这条独立分支上开发。功能开发完成并且经过审核之后,再将分支上的改动合并回主干,该操作称为合并分支

  5. 因此,如果你需要更换项目底层框架、替换模型 Backbone 这类大幅度修改,推荐新建一条独立分支,分支名称可以直接体现你的开发内容。等到分支版本效果优于主干时,再考虑将该分支合并至主干。

对于个人项目,这里给出一条建议:不必急于将分支合并到主干。新开分支之后你完全可以直接在这条分支上继续开发,项目同样可以正常迭代升级,而主干版本会停留在原来的状态。一旦分支合并到主干,主干代码就会被分支内容覆盖,后续想要找回合并前主干的状态就会变得相对困难。

左下角显示的当前所在分支图标也可以实现创建新分支和返回主干,或选择在哪个分支继续开发的功能

也可以直接让 AI 给你干,直接对他说就好了,为你提交、推送、创建分支之类的

状态标记含义对照表

标记 名称 含义
Unmodified 未修改(两列都为空格表示干净)
M Modified 已修改(内容变了,未删除、未重命名)
A Added 新增到暂存区(git add 新文件后)
D Deleted 已删除
R Renamed 已重命名
C Copied 已复制
U Unmerged 合并/变基冲突中,未解决冲突
T Type changed 文件类型变了(如普通文件↔符号链接)
? Untracked 未跟踪(Git 完全不认识的新文件,不在版本库里)
! Ignored 被 .gitignore 忽略(需 git status -s --ignored 才显示)

两列组合读法(X=暂存区 / Y=工作区)

组合 含义
?? 未跟踪的新文件
A 新增已暂存,工作区无后续修改
M 已跟踪文件被修改,但还没 git add
M 修改已暂存,工作区干净
MM 暂存后又改了(暂存区和工作区都有改动)
MD 暂存了修改,但工作区把文件删了
D 工作区删了文件,但还没暂存这次删除
D 删除已暂存
UU 双方都改了同一处,合并冲突未解决

VSCode 源代码管理面板里文件名旁的字母(如 UMDA)与上表对应,U 在那里通常指 Untracked(未跟踪),而非合并冲突的 Unmerged——需结合上下文判断。