不用 Git
文件名越来越乱,例如 final.ipynb、final2.ipynb、最终版真的最终版.ipynb。改错后不知道怎样恢复;别人也很难知道分析过程从哪里来。
Python在金融中的应用 · 第一部分
金融数据分析需要不断修改代码、调整变量、保存结果。如果没有版本控制,Notebook 很快会变成“final、final2、真的final”的混乱文件。本节学习 Git 的最低必要知识,并学会在 GitHub 和 Gitee 上寻找可靠资源。
Git 的核心作用是记录修改历史。它不只是给代码用,也可以管理 Notebook、论文草稿、课程讲义、数据说明和图表脚本。只要一个项目会反复修改、需要回看过程、需要多人协作,就值得使用版本控制。

文件名越来越乱,例如 final.ipynb、final2.ipynb、最终版真的最终版.ipynb。改错后不知道怎样恢复;别人也很难知道分析过程从哪里来。
每次重要修改都有记录,可以查看差异、回到旧版本,也能同步到 GitHub、Gitee、学院服务器或局域网共享仓库。Git 本身免费、开源、跨平台。
可以把 Git 理解成“给项目拍一张有说明的快照”。网盘通常保存“当前文件”,Git 保存“文件怎样一步步变成现在这样”。
Git 是分布式版本控制。每个同学电脑上的仓库都有一份完整历史;远程仓库只是大家共同交换版本的地方。远程仓库可以是 GitHub/Gitee,也可以是学院服务器、实验室电脑、NAS 或同一局域网里的共享目录。

bare repository 可以理解成“只用来收发版本的仓库”。它没有普通工作区,不直接打开 Notebook 编辑,适合作为同学之间的公共协作点。
# 在共享电脑或服务器上创建公共仓库
mkdir -p /srv/git
cd /srv/git
git init --bare python-finance.git
# 同学电脑上克隆
git clone ssh://student@192.168.1.20/srv/git/python-finance.git
如果几位同学都能访问同一个共享目录,可以把这个目录作为远程仓库。它适合课堂演示或小组内网协作,但要注意权限和备份。
# 把共享仓库加入为一个远程地址
git remote add lan /Volumes/course-git/python-finance.git
git pull lan main
git push lan main
局域网仓库不等于数据安全系统。真实个人信息、客户数据、API Key、数据库密码仍然不能放进仓库。Git 负责版本历史,不负责替你判断哪些数据可以公开。
很多 IDE、Notebook 平台、智能体和代码托管平台都在使用 Git 的能力。Trae、VS Code、PyCharm、GitHub Desktop、GitHub 网页、Gitee 网页、许多 AI 编程智能体,都可以读取 Git 状态、展示文件差异、提交 commit、推送分支,甚至发起 PR。
可以在侧边栏看到哪些文件被修改,点击按钮完成 stage、commit、push。
智能体通常会先查看 Git diff,再决定如何修改文件;也可以帮助生成 PR 描述。
PR 是把一组修改提交给团队审阅的方式。很多 IDE 和智能体都能辅助创建、解释和修改 PR。
即使以后主要用图形界面或 AI 工具,也要理解 Git 的基本动作。因为工具按钮背后仍然是在做 add、commit、pull、push 和 PR。
| 动作 | 简单理解 | 课程例子 |
|---|---|---|
| 工作区 | 正在编辑的文件。 | 正在修改的 `.ipynb`、数据说明、图片。 |
| 暂存 stage / add | 挑选这次要记录的文件。 | 选择刚完成的小微信贷 Notebook。 |
| 提交 commit | 把这次修改保存成一个版本。 | 提交信息写“完成小微信贷预期收益计算”。 |
| 拉取 pull | 先把远程的新修改拿到本地。 | 同学已经更新了数据说明,先同步下来。 |
| 推送 push | 同步到远程仓库。 | 上传到 GitHub 或 Gitee,便于备份和分享。 |
git statusadd 不是“上传”,而是把文件放入本次提交的候选清单。git add notebooks/04-git-resources.ipynb
git add README.mdgit status
git diff --cachedcommit 是把暂存区保存成本地历史中的一个版本。git commit -m "完成 Git 基本操作说明"git pull origin mainpush 才是把本地提交发到 GitHub、Gitee 或局域网仓库。git push origin main提交信息不要只写 “update”。好的提交信息应该说明完成了什么内容,便于以后回看。
python-finance-course/
├── notebooks/
│ ├── 01-python-ai.ipynb
│ ├── 02-ide-notebook.ipynb
│ └── 03-environment.ipynb
├── data/
│ └── README.md
├── outputs/
│ └── figures/
├── requirements.txt
├── .gitignore
└── README.md
建议把 Notebook、数据说明、输出图表分开放。真实敏感数据、账号密码、大型临时文件不应该提交到公开仓库。
# .gitignore 示例
.venv/
__pycache__/
.env
*.csv
*.xlsx
outputs/temp/
如果数据涉及个人信息、客户信息、银行流水或真实企业经营数据,不要上传到公开 GitHub / Gitee 仓库。课程练习尽量使用合成数据或脱敏数据。
GitHub 更国际化,很多开源项目和 AI 工具都在上面;Gitee 在国内访问更稳定,也适合课程、实验室和小组项目。两者基本流程相似:注册账号,新建仓库,复制仓库地址,本地 clone,修改文件,add、commit、push。

python-finance-course。# 第一次把远程仓库复制到电脑
git clone https://github.com/your-name/python-finance-course.git
cd python-finance-course
# 修改 README 后提交并上传
git status
git add README.md
git commit -m "添加课程项目说明"
git push origin main
如果远程仓库默认分支叫 master,就把命令里的 main 换成 master。不要为了“统一”强行修改不理解的分支设置。
GitHub 和 Gitee 不只是上传作业的地方,也是寻找学习资源的地方。关键是会判断资源是否可靠,而不是看到代码就复制。

搜索到项目后,先读 README,再看示例数据和许可证。课程中可以学习思路和结构,但不能把别人的作业或项目直接改名提交。
GitHub 是观察真实工程协作的窗口。很多大厂会把 SDK、模型工具、框架源码、文档示例放在 GitHub 上,issue 和 PR 里还能看到真实问题是怎样被讨论、修复和审阅的。

模型、推理、分布式文件系统等开源项目。
github.com/deepseek-aiPython、Node、Java、CLI、tokenizer 等官方工具。
github.com/openaiGoogle 开源项目入口,适合观察工程项目组织方式。
github.com/google深度学习框架源码、issue、PR、release 的完整历史。
github.com/pytorch/pytorch机器学习框架源码和生态工具。
github.com/tensorflow/tensorflowVS Code、TypeScript、Playwright 等大型项目。
github.com/microsoft真正的学习不是复制仓库,而是把别人的思路转化成自己能解释、能运行、能改写的金融分析流程。
把 “update” 改写成三条更好的提交信息,分别对应完成数据读取、完成图表绘制、完成结果解释。
为课程项目写一个 `.gitignore`,说明为什么 `.venv`、`.env` 和真实数据文件不应该提交。
新建一个私有仓库,添加 README,完成 clone、add、commit、push,并截图记录网页上的提交历史。
在 GitHub 或 Gitee 搜索一个 Python 金融数据分析项目,记录它的 README、数据来源、更新时间和许可证。
选择一个简单项目,把它改写成小微信贷或普惠金融指数相关的小例子,并说明你改了什么。
用自己的话解释 PR 为什么适合小组作业:谁提出修改,谁审阅,谁合并,冲突时如何讨论。