# Git 以及 Fork Gui 的使用
这是一份给完全没接触过 Git 的同学准备的实操指南。
# 1. Git 是什么?
- Git:代码版本管理工具。
- 你可以把它理解成 “代码时光机 + 协作工具”。
- 作用:
- 记录每次代码变化(谁改了什么)。
- 出问题时回退到历史版本。
- 多人协作不互相覆盖。
# 2. 先理解 4 个核心概念
- 工作区(Working Directory):你正在编辑的文件。
- 暂存区(Staging Area):准备提交的文件清单。
- 本地仓库(Local Repository):你电脑上的版本历史。
- 远程仓库(Remote Repository):GitHub/GitLab 上的仓库。
一个最常见流程:
改代码 -> git add -> git commit -> git push
简单理解就是,修改完代码了需要先在本地提交并保存,然后再决定是否要推送到云端。
# 3. 安装 Git(Windows)
- 打开 Git 官网:https://git-scm.com/download/win
- 下载并安装,安装时一路默认一般就够了。
- 安装完成后,打开 PowerShell 或 Git Bash,输入:
1 | git --version |
看到版本号就说明安装成功。
# 4. 安装 Fork 可视化工具
# 4.1 通过官网,安装 fork:Fork - a fast and friendly git client for Mac and Windows
# 4.2 下载并完成,在安装完成后打开,可以看到

输入自己的 id 和 GitHub 邮箱,选择一个本地的路径作为存储路径
# 4.3 初始化
第一次进入 fork 界面后,首先要创建一个本地的 SSHKey

然后创建一个新的 SSHKey

创建完以后我们可以看到具体的 Key 是多少,复制它,并到 github 的个人界面


# 4.4 克隆项目并进入
- 首先去 GitHub 复制 SSH 的链接

- 然后在本地克隆

# 5. 界面


左上角区域的作用分别是
- Fetch
将远程代码拉到本地,但是暂时不修改本地的代码,即可以看看修改了什么再决定是否要拉取
- Pull
将远程代码拉取并覆盖到本地
- Push
将本地的代码 Push 到 GitHub 远程仓库
- Stash
将本地代码先暂存,可以理解为先把代码放到回收站里,需要的时候再拿出来
从这图中我们可以梳理一下开发的流程。
由于当 LocalChange 中有内容时无法进行 Pull 操作,所以我们在开发前需要先进行 Fetch 和 Pull 操作,在解决完冲突后,再进行开发。
当开发完成后,我们需要对 Unstaged 的内容进行审查,没有问题以后将其 stage,之后这些更改过的文件就会进入 Staged 区,这个时候我们需要在右下角区域写清楚描述,将其 commit。
此时代码已经提交到本地的仓库了,这个时候再点击左上角的 Push 可以将本地仓库的内容提交到 GitHub 远程仓库。
# 6. 分支是什么
分支可以理解成 “平行开发线”,避免你直接在主分支乱改。由于每个人写的部分不一样,所以需要建立自己的分支防止对其他人产生影响。在开发完成后再将分支合并。
# 6.1 创建并切换到新分支

# 6.2 切换分支
在界面中双击某个分支即可切换过去。
# 6.3 合并分支(在 main 上执行)

# 7. 冲突怎么解决
冲突出现时,Git 会提示某些文件冲突。
处理步骤:
- 打开冲突文件,会看到类似标记:
1 | <<<<<<< HEAD |
- 手动保留正确内容,删除这些标记。
# 8. 提交信息怎么写
推荐格式:
类型: 简短说明
常见类型:
- feat: 新功能
- fix: 修复 bug
- docs: 文档更新
- refactor: 重构(不改功能)
- style: 代码格式调整
- test: 测试相关
- chore: 构建 / 工具 / 杂项
示例:
feat: 新增风险评分卡片fix: 修复收益率计算为 NaN 的问题docs: 补充 README 启动步骤
# 9. 常见报错
# 9.1 fatal: not a git repository
你不在仓库目录里。先 cd 到项目根目录再执行 Git 命令。
# 9.2 nothing to commit, working tree clean
没有可提交的改动,说明你当前文件和上一次提交一致。
# 9.3 rejected 或 non-fast-forward
远程比你新,先拉取再推送:
1 | git pull --rebase |
# 9.4 Permission denied (推送权限问题)
检查:
- 仓库地址是否正确。
- 是否登录了正确账号。
- SSH key /token 是否配置好。