misc git github engineering programming

版本控制与 Git 初识与 Github

2026年7月26日

← Home

自从 Github MCP 出道以来,各大远程托管仓库都为 AI 编码进一步放开了大门。对 Bash 的原住民 AI 来说,使用 Git 进行版本控制,早已不是问题。但是,还是希望每个人能够理解 Git 本身的重大意义,以及常见使用。以防万一( 这篇文章十分面向基础,引导童鞋们初步掌握版本控制 对于大多数内容都可以直接从 Pro Git 中发现有关参考,我们同时也鼓励各位直接粗滤的浏览 Pro Git 作为本次导入的基础

一、写在所有之前

有关版本控制的背景请参考 Pro Git 中有关 1.1 关于版本控制

在任何大型项目的编码过程中,如何合理的组织成员Agent间合作互助,提高办公效率永远是开发过程中绕不开的问题。而且,不单单是组织内成员间,对于个人而言如何理清自己当前的工作状态、下一步的工作同样需要程序员实打实的注意。

二、Git 初识

1、Git 实现

对于 Git 的更多底层实现,这里不做过多描述,详情请参考 Pro Git 中有关 1.2 Git 简史 1.3 Git 是什么? 10. Git 内部原理

简单点说,不同于一般思路的直接每次仅仅储存修改过的每个文件,Git 仅负责维护一组文件各自的快照,而对于 未做修改的文件,则直接保留一个链接指向之前存储的文件。

2、Git 工作流

通常来讲,使用 Git 完成绝大多任务,只需要几个命令(对于一些不打算上传到远程的私密文件,可以在 .gitignore 文件中标注,这很重要)

这里是一组常用的 .gitignore 模版文件集合 https://github.com/github/gitignore

意义命令
初始化仓库git init
追踪 filenamegit add <filename>
提交更改git commit -m '对本次更改的描述'
从 remote 拉取(即同步远程到本地)git fetch <remote>
新建 branchname 分支git branch <branchname>
推送 branch 分支到 remote (即同步本地到远程)git push <remote> <branch>
选择目标 hash 节点 / branch 分支git checkout <hash/branch>
将 branch 分支合并到主分支git merge <branch>

而对于撤销操作这里没有做提及,主要是因为没有必要。撤销操作一定程度上不仅仅会破坏开发者的思路,同时也容易让开发者再次踏入之前撤销掉的操作。不如保留历史,当做错题集吧(

但是对于纯命令行形式的 Git 使用难免会产生混乱,毕竟你无法很直观的观察到当前的项目是否存在问题。而对于大多数现代的 IDE 来说,他们都提供了 GUI (图形化界面)来辅助开发者进行版本控制。下面以 VS Code 为例展开简单概述。

image1

这是一份 2026SASTCsharp组免试题喵 的部分项目,注意到对于项目左栏的文件视图中存在绿色和黄色标识的文件,分别表示新增和修改,而对于删除的文件,则以红色标识表示.

image2

跳转到版本控制界面,可以看到做出了那些修改,以及历史修改。单击某个文件,也可以看到修改了那些内容。

image3

同时注意到这里存在一处 git merge 操作,这里合并了远程的 README.md 修改到本地。对于分支,可以通过命令行或者鼠标右键目标节点来创建、删除,至于合并,vscode 本身自带的 Git 控制并未提供相关操作,但是可以通过下图通过 Ctrl+Shift+P(Windows)搜索 Git Merge 命令来辅助实现

(其实一般来说不应该这样做,但是这个项目只有这一处分支能说了)

image4

image5

以上给出之前给出的几个常用命令的等价按钮(更多方便内容可以通过下载 GitLen 插件实现)

image6

三、Github 初识

请确保你已经拥有健康的网络环境 作为全球最大的 Git 远程托管平台,Github 不仅仅给我们一个平台来托管自己的本地代码,同时也是全球开源创作者的盛宴

如果 Git 让每一个开发者拥有了进一步掌控自己的代码的能力,那么 Github 这类远程托管平台则为团队协作提供了遍历

对于大多数普通开发者而言,Github 已经足够了,但是对于保密性极高的大厂来说,他们需要自己的服务器来托管代码,详情请参考 Pro Git 中有关 4. 服务器上的 Git

image7

上图展示了一个名为 runner 的半死不活项目的主界面,下面就此项目对版本控制进行进一步导入。如下图,对于每一个新建并推送到远程的分支,我们都可以提交一个 PR (如何创建 PR),通过创作者/贡献者审查的分支,将会被他们合并到目标分支上

image8

image9

对于单个项目,指望所有人同时编码某一个分支,显然容易产生版本冲突,所以我们经常引入了一套 Git 工作流来协调开发者之间的工作。

更多有关 Gitflow 工作流请参考 团队协作 -- Gitflow 工作流

四、Github 拓展

上文提到,Github 作为全球最大的远程托管仓库,其中自然不少有很多优秀的~~(好使的)~~功能/开源项目等着我们去挖(bai)掘(piao),下面仅举几例,作为拓展内容。

1、Explore

image10

把 Github 当 B站刷

Explore 区域每天都会展示当天的热门项目,在这里,既有 AI 最前沿,也有一些小众变态黑科技

2、Github Pages

image11

Github 为每一位用户都提供了便捷的 Github Pages 部署方案,任何叫做 <username>.github.io 的仓库一旦创建,Github 都会为他直接提供好一套部署服务,适合作为新手零成本搭建 blog

3、Github Actions

image12

作为托管平台,Github 自然也提供了很多用来辅助托管的功能,Github Actions 提供了一套包含 CI/CD 的成熟体系,每次 merge 、每次 PR 甚至每次 commit,都可以在这里找到管理方案

4、学生认证

image13

很可惜的是,自从 2025 年末左右的 AI 大爆发,以前被疯狂薅羊毛的学生认证也几乎完全封闭了 GitHub Copilot 的使用(一句话 50%)现在除了高度嵌入 Github,别的地方几乎一事无成(

5、Guthib.com

点进去就知道了(类似的还有 http://example.com/