Git入门概念

电脑要安装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 就全部帮你记录下来。

相关推荐
爱奥尼欧10 小时前
【Git】远程分支删了本地还在、两个分支历史不相干?两招故障排解
开发语言·git
Java后端的Ai之路10 小时前
Git冲突完整排查与实战:本地修改覆盖报错到成功推送全流程复盘
开发语言·人工智能·git·python·pop
一个心烑11 小时前
配置项目git的 SSL 证书
git·网络协议·ssl
IT从业者张某某18 小时前
【鸿蒙PC命令行适配】GitUI 移植的工程实践:双 Git 引擎(libgit2/gitoxide)的鸿蒙适配之路
git·华为·harmonyos
xinjia_ctrl1 天前
暑假实习总结
git·后端·spring·maven·intellij-idea
Molesidy1 天前
【Git】分别给出添加到Keil工程和IAR工程中的gitnore文件以便不跟踪编译文件的git记录
git·vscode·插件
颜颜yan_1 天前
Git Cola 鸿蒙 PC 版适配全记录:从 Qt 桌面工具到 ArkTS 原生应用
git·qt·harmonyos
知福致福1 天前
【技术复盘】Git 分支污染与提交污染事故排查与解法
大数据·git·elasticsearch
ai安歌1 天前
Git Extensions 鸿蒙 PC 适配全记录:从 WinForms 客户端到 ArkUI 原生工作台
git·华为·harmonyos