
电脑要安装Git
Git = 给你的代码建立"可回退的历史版本"。
先别管分支、rebase、merge、远程仓库这些东西。
1. Git要解决的问题
手动保存项目(非单文件)版本会出现:
T_812_V1.pro
T_812_V2.pro
T_812_V3.pro
T_812_最终版.pro
T_812_最终最终版.pro
T_812_最终真的最终版.pro
2. Git = 版本时间机器
例如:
bash
今天 10:00
↓
修改 FFT
↓
保存一个版本
↓
10:30
↓
修改 FFT
↓
保存一个版本
↓
11:00
↓
又修改
↓
保存一个版本
Git 会形成:
bash
版本1 ──→ 版本2 ──→ 版本3 ──→ 版本4
↑
可以随时回来
所以 Git 最核心的功能就是:
记录"谁什么时候把代码改成了什么样"。
3. Git 和 SVN 最大的区别
SVN 大概是:
bash
你的电脑
│
↓
SVN服务器
大家围绕一个中央服务器工作:
SVN服务器
/ | \
/ | \
A B C
Git 更像:
Git服务器
/ \
/ \
A电脑 B电脑
│ │
本地Git 本地Git
每个人电脑上都有完整的 Git 历史。
所以:
Git 本身不等于 GitHub。
这一点特别重要。
4. Git 和 GitHub 是两个东西
很多初学者就是这里搞混了。
Git
是:
版本控制软件
安装 Git 后,你的电脑就可以自己管理版本。
例如:
bash
D:\MyProject
里面:
bash
main.py
config.py
README.md
你甚至不需要联网。
GitHub
是:
放 Git 仓库的网络平台
类似于:
bash
Git
↓
本地版本管理
GitHub
↓
网络上的远程仓库
所以你完全可以:
不用 GitHub,只使用 Git。
5. Git 最核心其实只有 3 个动作
你先只学这三个:
bash
git add
git commit
git push
就已经能干很多事了。
第一步:修改代码
比如你改了:
bash
T_892.TcPOU
Git发现:
bash
原来的版本
↓
修改
↓
现在的版本
第二步:commit
bash
git add .
git commit -m "优化892"
意思就是:
把我现在的代码状态保存成一个版本。
于是 Git 记录:
bash
版本 #1
优化892
以后又改:
bash
git add .
git commit -m "增加线性"
于是:
bash
#1 优化892
↓
#2 增加线性
6. commit 是 Git 最重要的概念
你可以把:
bash
commit
直接理解成:
存档
玩游戏的时候:
bash
存档1
↓
继续玩
↓
存档2
↓
继续玩
↓
存档3
Git:
bash
commit 1
↓
继续开发
↓
commit 2
↓
继续开发
↓
commit 3
如果你把代码改崩了:
读档。
这就是 Git。
7. 那 push 是干什么?
假设:
bash
你的电脑
Git仓库
你 commit 以后,版本只存在你电脑上。
如果电脑硬盘坏了:
💀
所以再把它上传到 GitHub/GitLab:
bash
git push
就变成:
bash
你的电脑
│
│ push
↓
GitHub/GitLab
所以:
bash
commit = 本地存档
push = 上传到服务器
这个区别一定要搞清楚。
8. 那 pull 呢?
反过来。
别人修改了代码:
bash
Git服务器
↓
pull
↓
你的电脑
所以:
bash
push = 我上传
pull = 我下载别人最新版本
9. 这样你就能理解最常用的完整流程
以后你做自己的 Python / Vue / PLC 辅助工具,可以直接:
bash
修改代码
↓
git add .
↓
git commit
↓
git push
第二天继续:
bash
git pull
↓
修改代码
↓
git add .
↓
git commit
↓
git push
就这么简单。
10. 那为什么 Git 搞出"分支"这么复杂?
这是 Git 第二阶段才应该学的东西。
比如你现在有一个稳定版本:
bash
main
│
│
●
突然你想尝试一个非常危险的功能:
"我要把 T 从 892 改成 16384。"
你不敢直接改主程序。
于是:
bash
main
│
●
│
├──────────────→ T-16384
│
│ ↓
│ 开始实验
│
●
│
稳定版本
这就是:
branch(分支)
你可以理解成:
从当前存档复制一条平行世界出来。
11. 最后把它合回来
如果实验成功:
bash
main
│
●───────────────┐
│
实验分支 │
│ │
● │
│ │
●───────────────┘
↓
merge
把实验成果合并回主版本。
所以:
bash
branch = 开一个平行开发线
merge = 把它合回来
你现在完全不需要一开始就学:
bash
rebase
cherry-pick
stash
reset
revert
HEAD
origin
upstream
这些东西等真正遇到需求再学。
示例:
假设你电脑上有一个项目:
bash
D:\MyProject\FFT_Test
里面可能是:
bash
FFT_Test
├── src
│ ├── main.py
│ └── fft.py
├── config
├── README.md
└── test
我们的目标就是:
bash
电脑上的 FFT_Test
↓
Git
↓
GitHub
GitHub 官方目前也是推荐这种流程:本地 git init → add → commit → 添加远程仓库 → push。
一、先在 GitHub 创建一个空仓库
登录 GitHub。
右上角:
- → New repository
假设你的项目叫:
bash
FFT_Test
那么填写:
bash
Repository name:
FFT_Test
选择:
bash
Private
我建议你第一次先选 Private(私有)。
然后注意:
不要勾选 README
不要添加 .gitignore
不要添加 License
因为我们现在是把一个已经存在的本地工程直接推上去。GitHub 官方也建议这种情况下创建空仓库,避免第一次 push 时产生不必要的冲突。
然后:
Create repository
创建完成后,你会看到一个类似:
https://github.com/你的用户名/FFT_Test.git
的地址。
先不要关这个页面。
二、进入你本地工程
比如你的工程在:
bash
D:\MyProject\FFT_Test
最简单的方法:
在这个文件夹里面:
右键 → Open Git Bash here
如果你的 Git 安装正常,应该能看到一个黑色终端。
输入:
bash
git status
如果出现类似:
bash
fatal: not a git repository
不要紧,这是正常的。
因为这个文件夹目前还不是 Git 仓库。
三、让这个工程开始使用 Git
输入:
bash
git init
你会看到类似:
bash
Initialized empty Git repository in D:/MyProject/FFT_Test/.git/
这一步非常重要。
它实际上是在你的工程里面创建了:
bash
FFT_Test
├── src
├── config
├── test
└── .git
这个 .git 文件夹就是:
Git 的数据库。
你的代码还是原来的代码,Git 只是开始"监控"这个文件夹。
四、看看 Git 发现了什么
输入:
bash
git status
你可能会看到:
bash
Untracked files:
src/
config/
test/
README.md
意思就是:
"这些文件我还没有开始管理。"
五、把工程交给 Git
输入:
bash
git add .
注意最后有一个:
bash
.
这个点表示:
当前工程下面所有文件。
然后:
bash
git status
你会发现那些文件变成了绿色。
这时候你可以理解成:
bash
你的工程
↓
git add .
↓
准备保存
六、第一次保存版本
输入:
bash
git commit -m "第一次提交"
你可能看到:
bash
[main (root-commit) abc1234] 第一次提交
10 files changed
...
恭喜。
你刚才已经完成了 Git 最核心的一件事:
给你的工程创建了第一个版本存档。
现在即使没有 GitHub,你的项目也已经开始被 Git 管理了。
七、把本地 Git 和 GitHub 联系起来
现在有两个东西:
bash
你的电脑 GitHub
FFT_Test FFT_Test
│ │
│ │
本地 Git 远程 Git
它们现在还没有联系。
输入:
bash
git remote add origin https://github.com/你的用户名/FFT_Test.git
例如你的 GitHub 用户名是:
bash
zhangsan
那么:
bash
git remote add origin https://github.com/zhangsan/FFT_Test.git
这里:
bash
origin
你可以暂时理解成:
给 GitHub 这个远程仓库起的名字。
以后你看到:
bash
origin
基本就可以理解成:
GitHub 上的那个仓库。
GitHub 官方文档也是使用 git remote add origin 建立本地仓库和远程仓库的关联。
八、检查一下有没有连对
输入:
bash
git remote -v
应该看到:
bash
origin https://github.com/zhangsan/FFT_Test.git (fetch)
origin https://github.com/zhangsan/FFT_Test.git (push)
看到这个就说明:
本地工程 ↔ GitHub
已经建立关系。
九、最后一步:push
现在输入:
bash
git push -u origin main
// 如不通提示master
仓库初始化时用了 master(旧仓库),所以本地分支名是 master,但你在命令里写了 main,两边对不上就报错了
git push -u origin master
这就是:
把刚才本地保存的代码上传到 GitHub。
第一次可能会让你进行 GitHub 身份验证。
如果成功,会出现类似:
bash
Enumerating objects...
Counting objects...
Writing objects...
To https://github.com/zhangsan/FFT_Test.git
* [new branch] main -> main
然后你刷新 GitHub 网页。
你会发现:
bash
FFT_Test
src
config
test
README.md
...
全部出现在 GitHub 上了。
🎉 这就完成了。
十、把整个过程压缩成 7 条命令
以后你有一个新的本地工程:
bash
D:\MyProject\ABC
你只需要记住:
bash
cd D:\MyProject\ABC
git init -b main
git add .
git commit -m "第一次提交"
git remote add origin https://github.com/你的用户名/ABC.git
git push -u origin main
这就是:
bash
进入工程
↓
初始化Git
↓
添加文件
↓
创建版本
↓
连接GitHub
↓
上传
十一、以后修改代码就简单得多了
假设今天你修改了:
bash
src/fft.py
你只需要:
bash
git status
Git 告诉你:
bash
modified: src/fft.py
然后:
bash
git add .
再:
bash
git commit -m "修改2"
最后:
bash
git push
注意:
以后通常不需要再写:
bash
git init
也不需要:
bash
git remote add origin ...
这些都是第一次设置的时候做的。
以后基本就是:
bash
修改代码
↓
git add .
↓
git commit -m "我改了什么"
↓
git push
十二、你现在可以把 Git 理解成这个东西
假设你正在开发你的 FFT:
本地电脑
│
↓
Test工程
│
git add .
│
↓
git commit
│
↓
本地版本库
│
git push
│
↓
GitHub
以后你改了 100 次:
bash
commit 1 第一次
↓
commit 2 增加H
↓
commit 3 增加线性
↓
commit 4 增加曲线
↓
commit 5 修复
Git 就全部帮你记录下来。