摘要
本文适合刚接触 Git 的初学者,重点讲清楚 Git 是什么、为什么要用 Git、怎么用 Git 管理代码版本。
文章会分别演示两种常见使用方式:命令行操作 Git 和 在 PyCharm 中操作 Git 。
远程仓库平台使用 Gitee ,内容覆盖本地初始化、提交代码、推送远程、拉取代码、分支管理、冲突处理等常用场景。
看完后,你可以独立完成一个项目从本地开发到上传 Gitee 的完整流程。
一、为什么要学 Git 版本管理
在没有 Git 之前,很多新手保存项目可能是这样的:
demo_v1
demo_v2
demo_最终版
demo_最终版2
demo_最终版_不要删
看起来能用,但项目一复杂就会出现问题:
-
不知道哪一版代码是正确的;
-
改坏代码后,不知道怎么恢复;
-
多人开发时,互相覆盖代码;
-
换电脑后,项目不好同步;
-
项目上线后,无法快速定位是哪次修改引入了 bug。
Git 解决的就是这些问题。
Git 官方文档把 Git 定义为一个快速、可扩展的分布式版本控制系统,它提供了丰富的命令来管理代码历史、分支、提交和协作流程。(Git中文网)
我的理解是:
Git 就是代码项目的"时间机器"。
你每提交一次代码,就相当于给项目保存一个快照。以后代码出问题,可以查看历史,也可以回退到之前的版本。
而 Gitee 的作用是把本地 Git 仓库放到远程平台上,方便备份、协作和代码托管。Gitee 官方文档说明,目前 Gitee 支持通过 HTTPS 和 SSH 协议进行代码推送和拉取。(Gitee帮助中心)
二、先用一句话理解它
Git 是一个帮我们记录代码修改历史的工具,Gitee 是一个帮我们存放远程 Git 仓库的平台。
也可以这样理解:
Git:管本地版本
Gitee:管远程托管
PyCharm:用图形界面帮你操作 Git
真正开发时,三者通常配合使用:
写代码 -> Git 提交版本 -> 推送到 Gitee -> 其他电脑或同事拉取代码
三、核心概念解释
1. 工作区
工作区就是你正在写代码的项目目录。
比如:
git-demo
├── main.py
├── README.md
└── .gitignore
你在 PyCharm 里修改 main.py,这个文件所在的目录就是工作区。
一句话理解:
工作区 = 你正在编辑代码的地方
2. 暂存区
暂存区可以理解为"准备提交的文件列表"。
比如你改了 3 个文件:
main.py
README.md
config.py
但你这次只想提交 main.py,那就只把 main.py 加入暂存区:
git add main.py
如果想把所有修改都加入暂存区:
git add .
我的理解是:
git add 不是提交代码,而是告诉 Git:这些文件我准备提交。
3. 本地仓库
本地仓库就是你电脑上的 Git 仓库。
执行:
git commit -m "提交说明"
之后,Git 会把暂存区中的内容保存成一个版本。
一句话理解:
git commit = 给当前代码保存一个版本快照
4. 远程仓库
远程仓库就是 Gitee 上的仓库。
本地代码提交后,如果要上传到 Gitee,需要执行:
git push
如果要从 Gitee 拉取最新代码,需要执行:
git pull
Gitee 支持 HTTPS 和 SSH 两种常见方式。HTTPS 对新手更直接;SSH 需要先配置 SSH Key,但配置好后,通常推送和拉取时不需要反复输入账号密码。(Gitee帮助中心)
5. 分支
分支可以理解为"代码的平行世界"。
比如主分支是稳定版本:
main
你要开发登录功能,可以新建一个分支:
feature-login
这样你在 feature-login 分支上怎么改,都不会直接影响 main 分支。
常见分支命令:
git branch
git checkout -b feature-login
git checkout main
git merge feature-login
我的建议是:
主分支放稳定代码,功能分支放正在开发的代码。
四、准备工作
1. 安装 Git
安装完成后,打开命令行,输入:
git --version
如果能看到版本号,说明 Git 安装成功:
git version 54.xx.x
2. 安装 PyCharm
本文使用 PyCharm 操作 Git。
https://www.jetbrains.com/zh-cn/pycharm/download/?section=windows
JetBrains 的 PyCharm 文档中也提供了 Git 提交、推送等版本控制操作说明,比如 Commit、Commit and Push、Push 等功能入口。(JetBrains)
3. 注册 Gitee 账号
需要提前准备:
Gitee 账号
一个空的 Gitee 仓库
远程仓库地址一般长这样:
HTTPS:
https://gitee.com/用户名/仓库名.git
SSH:
git@gitee.com:用户名/仓库名.git
初学者建议先用 HTTPS。
如果后面经常推送代码,再配置 SSH。
4. 配置 Git 用户信息
第一次使用 Git,需要配置用户名和邮箱:
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
查看配置:
git config --global --list
如果看到类似内容,说明配置成功:
user.name=zhangsan
user.email=zhangsan@example.com
这里的用户名和邮箱会记录到每一次 Git 提交中。
五、一步一步实战
下面分两部分:
第一部分:命令行实现 Git + Gitee
第二部分:PyCharm 实现 Git + Gitee
建议先学命令行,因为 PyCharm 的图形化操作,本质上也是在调用 Git 命令。
第一部分:命令行实现 Git + Gitee
1. 创建项目目录
mkdir git-demo
cd git-demo
创建一个 Python 文件:
echo print("Hello Git") > main.py
也可以手动创建 main.py,内容如下:
print("Hello Git")
这一步做的是:准备一个普通项目目录。
新手容易出错的地方:
命令行没有进入项目目录,就开始执行 git init。
可以用下面命令确认当前位置:
pwd
Windows CMD 可以使用:
cd
2. 初始化 Git 仓库
在项目根目录执行:
git init
执行后,当前目录会生成一个隐藏文件夹:
.git
这个 .git 文件夹保存了 Git 仓库信息,不要随便删除。
查看状态:
git status
你可能会看到:
Untracked files:
main.py
意思是:
Git 发现了 main.py,但还没有正式管理它。
3. 添加文件到暂存区
添加单个文件:
git add main.py
添加所有文件:
git add .
查看状态:
git status
可能看到:
Changes to be committed:
new file: main.py
说明文件已经进入暂存区。
我的理解是:
git add = 把文件放进"待提交清单"
4. 提交到本地仓库
执行:
git commit -m "初始化项目"
查看提交记录:
git log
简洁查看:
git log --oneline
可能看到:
a1b2c3d 初始化项目
这就说明第一个版本已经保存成功。
注意,提交说明不要随便写:
不推荐:
git commit -m "修改"
git commit -m "更新"
git commit -m "提交"
推荐:
git commit -m "初始化 Python 项目"
git commit -m "新增用户登录功能"
git commit -m "修复密码为空时的校验问题"
好的提交说明能帮助你以后快速定位问题。
5. 在 Gitee 创建远程仓库
进入 Gitee,创建一个新仓库。
建议新手这样设置:
仓库名:git-demo
是否开源:按需要选择
初始化 README:不勾选
初始化 .gitignore:不勾选
为什么建议不勾选初始化文件?
因为本地已经有提交记录,如果远程仓库也自动生成了 README,本地和远程就会有两份不同历史,新手第一次 push 时容易遇到冲突。
简单原则:
本地已有项目 -> Gitee 建空仓库
Gitee 已有项目 -> 本地用 git clone
6. 绑定 Gitee 远程仓库
复制 Gitee 仓库地址。
HTTPS 示例:
git remote add origin https://gitee.com/你的用户名/git-demo.git
SSH 示例:
git remote add origin git@gitee.com:你的用户名/git-demo.git
查看远程地址:
git remote -v
如果看到类似内容,说明绑定成功:
origin https://gitee.com/你的用户名/git-demo.git (fetch)
origin https://gitee.com/你的用户名/git-demo.git (push)
这里的 origin 是远程仓库默认别名。
7. 推送代码到 Gitee
先查看当前分支名:
git branch
如果当前分支是 main:
git push -u origin main
如果当前分支是 master:
git push -u origin master
-u 的作用是建立本地分支和远程分支的关联。
第一次执行后,以后可以直接:
git push
新手容易出错:
本地分支叫 master,但推送时写成 main。
解决方法是先看当前分支:
git branch
如果想把分支统一改成 main:
git branch -M main
git push -u origin main
8. 修改代码后再次提交
修改 main.py:
print("Hello Git")
print("第二次提交")
查看文件状态:
git status
查看具体改了什么:
git diff
提交并推送:
git add .
git commit -m "新增第二行输出"
git push
日常开发最常见流程就是:
git status
git add .
git commit -m "提交说明"
git push
9. 从 Gitee 克隆项目
如果你换了一台电脑,想把 Gitee 上的项目下载下来:
git clone https://gitee.com/你的用户名/git-demo.git
或者使用 SSH:
git clone git@gitee.com:你的用户名/git-demo.git
进入项目目录:
cd git-demo
查看状态:
git status
git clone 会自动帮你配置远程仓库地址,一般不需要再执行 git remote add origin。
10. 拉取远程代码
如果远程仓库有新代码,本地需要同步:
git pull
多人开发时,建议每次开始写代码前先执行:
git pull
完整开发流程:
git pull
# 修改代码
git status
git add .
git commit -m "提交说明"
git push
11. 创建和合并分支
创建并切换分支:
git checkout -b feature-login
查看分支:
git branch
提交功能代码:
git add .
git commit -m "新增登录功能"
切回主分支:
git checkout main
如果你的主分支叫 master:
git checkout master
合并分支:
git merge feature-login
推送主分支:
git push
新手建议记住:
开发新功能 -> 新建分支
功能稳定后 -> 合并到主分支
12. 回退和撤销修改
撤销工作区修改
如果文件改坏了,但还没有 git add:
git restore main.py
旧写法也可以:
git checkout -- main.py
撤销暂存区文件
如果已经执行了 git add,但还没有提交:
git reset HEAD main.py
或者:
git restore --staged main.py
回退到历史版本
先查看历史:
git log --oneline
例如:
c3d4e5f 新增登录功能
a1b2c3d 初始化项目
回退到某个版本:
git reset --hard a1b2c3d
注意:
git reset --hard 会丢弃当前修改,新手使用前一定先执行 git status。
第二部分:在 PyCharm 中实现 Git + Gitee
1. 配置 PyCharm 的 Git 路径
打开 PyCharm:
File -> Settings -> Version Control -> Git
Git executable path 一般类似:
Windows:
C:\Program Files\Git\bin\git.exe
点击:
Test
如果能看到 Git 版本号,说明 PyCharm 已经识别 Git。
2. 在 PyCharm 中启用 Git
打开项目后,点击:
VCS -> Enable Version Control Integration
选择:
Git
点击 OK。
这一步相当于命令行中的:
git init
启用后,PyCharm 中的文件颜色可能会变化:
红色:新文件,还没有被 Git 管理
蓝色:已修改文件
绿色:新文件,已经加入暂存
普通颜色:没有修改
不同主题颜色可能略有差异,但含义类似。
3. 在 PyCharm 中添加文件
选中文件或项目目录,右键:
Git -> Add
这一步相当于:
git add .
也可以在 Commit 窗口中勾选需要提交的文件。
新手注意:
不是所有文件都必须提交,虚拟环境、缓存文件、日志文件通常不要提交。
4. 在 PyCharm 中提交代码
点击菜单:
Git -> Commit
或者使用快捷键:
Ctrl + K
填写提交说明,例如:
初始化 Python 项目
然后点击:
Commit
这一步相当于:
git commit -m "初始化 Python 项目"
JetBrains 文档中也说明,当你添加了新文件或修改了 Git 管理下的文件,并确认当前状态后,就可以提交并推送这些工作成果。(JetBrains)
5. 在 PyCharm 中绑定 Gitee 远程仓库
菜单路径:
Git -> Manage Remotes
点击加号,添加:
Name: origin
URL: https://gitee.com/你的用户名/git-demo.git
如果使用 SSH:
URL: git@gitee.com:你的用户名/git-demo.git
这一步相当于:
git remote add origin 远程仓库地址
添加完成后,可以在 PyCharm 的 Terminal 中确认:
git remote -v
6. 在 PyCharm 中推送代码到 Gitee
点击:
Git -> Push
快捷键通常是:
Ctrl + Shift + K
确认远程仓库地址和分支后,点击 Push。
如果第一次推送失败,可以在 PyCharm Terminal 中手动执行:
git push -u origin main
或者:
git push -u origin master
7. 在 PyCharm 中拉取远程代码
点击:
Git -> Pull
选择远程分支后执行 Pull。
这一步相当于:
git pull
如果多人协作,建议每次写代码前先 Pull。
8. 在 PyCharm 中查看代码差异
PyCharm 查看修改很方便。
可以右键文件:
Git -> Show Diff
也可以在 Commit 窗口里点击文件查看差异。
这一步相当于:
git diff
我的经验是:
提交前一定看一眼 Diff,确认没有把测试代码、临时打印、无关文件提交上去。
9. 在 PyCharm 中创建分支
点击右下角当前分支名,比如:
main
选择:
New Branch
输入:
feature-login
点击创建。
这一步相当于:
git checkout -b feature-login
开发完成后,可以通过分支菜单切回主分支,再进行 Merge。
六、完整代码
下面用一个简单 Python 项目演示 Git 管理。
项目结构:
git-demo
├── main.py
├── calculator.py
├── README.md
└── .gitignore
main.py
from calculator import add, subtract
def main():
print("Git 版本管理示例")
print("3 + 2 =", add(3, 2))
print("3 - 2 =", subtract(3, 2))
if __name__ == "__main__":
main()
calculator.py
def add(a, b):
"""返回两个数的和"""
return a + b
def subtract(a, b):
"""返回两个数的差"""
return a - b
README.md
# Git Demo
这是一个用于学习 Git 版本管理的 Python 示例项目。
## 功能
- 加法计算
- 减法计算
## 运行方式
```bash
python main.py
### .gitignore
```gitignore
__pycache__/
*.pyc
.venv/
venv/
.idea/
.DS_Store
*.log
完整命令流程:
# 进入项目目录
cd git-demo
# 初始化 Git 仓库
git init
# 查看状态
git status
# 添加文件
git add .
# 提交到本地仓库
git commit -m "初始化 Python 示例项目"
# 绑定 Gitee 远程仓库
git remote add origin https://gitee.com/你的用户名/git-demo.git
# 查看远程地址
git remote -v
# 推送到 Gitee
git push -u origin main
如果当前分支是 master:
git push -u origin master
七、代码解释
这个项目本身很简单,核心目的是演示 Git 如何管理代码变化。
1. main.py 负责程序入口
from calculator import add, subtract
这行代码从 calculator.py 中导入函数。
if __name__ == "__main__":
main()
这表示直接运行 main.py 时,才执行 main() 函数。
2. calculator.py 负责具体功能
def add(a, b):
return a + b
这个函数负责加法。
def subtract(a, b):
return a - b
这个函数负责减法。
后面如果新增乘法:
def multiply(a, b):
return a * b
Git 就能检测到 calculator.py 文件发生了变化。
你可以执行:
git status
git diff
查看变化。
3. README.md 负责项目说明
README 是别人打开你 Gitee 仓库后最先看到的内容。
建议写清楚:
项目是做什么的
如何安装
如何运行
主要功能
注意事项
一个项目即使代码简单,也建议保留 README。
4. .gitignore 负责忽略不需要提交的文件
比如 Python 会生成缓存:
__pycache__/
*.pyc
PyCharm 可能会生成配置文件:
.idea/
虚拟环境目录:
venv/
.venv/
这些通常不需要提交到远程仓库。
如果某个文件已经被 Git 跟踪了,再写进 .gitignore 不会自动生效。
需要先取消跟踪:
git rm --cached 文件名
例如:
git rm --cached .idea/workspace.xml
git commit -m "移除不需要提交的 PyCharm 配置文件"
八、常见问题
1. git 不是内部或外部命令
原因:
Git 没安装,或者环境变量没配置好。
解决:
git --version
如果没有版本号,重新安装 Git,并重新打开命令行。
2. 提交时报 Please tell me who you are
原因:
没有配置 Git 用户名和邮箱。
解决:
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
3. push 到 Gitee 时提示权限不足
常见原因:
远程地址写错
Gitee 账号没有仓库权限
HTTPS 认证失败
SSH Key 没配置
先检查远程地址:
git remote -v
如果地址错了,修改:
git remote set-url origin 新仓库地址
Gitee 文档说明,使用 SSH 协议前需要先配置并添加 SSH key;HTTPS 和 SSH 在 clone、pull、push 等命令使用上差异不大,主要差异在地址和认证方式。(Gitee帮助中心)
4. push 时提示 rejected 或 fetch first
原因:
远程仓库有本地没有的提交。
解决:
git pull
git push
如果出现冲突,先解决冲突,再提交。
5. git pull 后出现冲突
冲突内容一般长这样:
<<<<<<< HEAD
本地代码
=======
远程代码
>>>>>>> origin/main
意思是:
同一个位置,本地和远程都改了,Git 不知道该保留哪一份。
解决方法:
-
手动编辑文件;
-
删除冲突标记;
-
保留正确代码;
-
重新提交。
命令:
git add .
git commit -m "解决代码冲突"
git push
6. PyCharm 看不到 Git 菜单
常见原因:
PyCharm 没配置 Git 路径
当前项目没有启用 Git
当前目录不是 Git 仓库
解决:
File -> Settings -> Version Control -> Git
检查 Git 路径。
然后:
VCS -> Enable Version Control Integration -> Git
7. main 和 master 到底用哪个
两者都是分支名。
以前很多项目默认叫:
master
现在很多项目默认叫:
main
查看当前分支:
git branch
根据实际分支推送:
git push -u origin main
或者:
git push -u origin master
如果想改成 main:
git branch -M main
git push -u origin main
8. git add . 会不会提交垃圾文件
会。
所以要配置 .gitignore。
Python 项目建议至少忽略:
__pycache__/
*.pyc
venv/
.venv/
.idea/
*.log
新手要记住:
git add . 很方便,但提交前一定看 git status 和 diff。
九、我的理解与经验总结
1. Git 不是"上传工具"
很多新手以为 Git 就是把代码上传到 Gitee。
这个理解不准确。
Git 的核心是:
记录历史
管理版本
支持回退
支持分支
支持协作
Gitee 只是远程托管平台。
也就是说:
没有 Gitee,也能用 Git 管理本地版本。
有了 Gitee,可以把本地仓库同步到远程。
2. 初学者先掌握一条主流程
不要一开始就学太多高级命令。
先把下面这条流程练熟:
git pull
git status
git add .
git commit -m "提交说明"
git push
这就是日常开发最常用的 Git 流程。
3. 命令行和 PyCharm 都要会
PyCharm 好处是直观:
看 diff 方便
提交文件方便
处理冲突方便
切换分支方便
命令行好处是稳定:
能快速排查问题
能看清 Git 当前状态
任何编辑器都能用
我的建议是:
平时用 PyCharm 提高效率,出问题时用命令行定位原因。
4. 提交说明要认真写
差的提交说明:
修改
更新
代码
提交
好的提交说明:
新增用户登录接口
修复登录密码为空时的校验问题
优化商品列表分页查询
提交说明写得越清楚,后期排查问题越轻松。
5. 不要什么文件都提交
应该提交:
源代码
README
配置模板
依赖说明文件
不建议提交:
虚拟环境
缓存文件
日志文件
本地 IDE 私人配置
编译产物
Git 很适合管理文本文件,尤其是代码。
但不适合频繁管理大型二进制文件,比如视频、压缩包、数据库文件。
十、总结
本文从初学者角度讲解了 Git 版本管理,并分别演示了命令行和 PyCharm 两种操作方式,远程平台使用 Gitee。
重点记住这条流程:
修改代码
git status 查看状态
git add 加入暂存区
git commit 提交本地版本
git push 推送到 Gitee
git pull 拉取远程代码
命令行能帮你理解 Git 的真实流程,PyCharm 能提高日常开发效率,Gitee 能完成远程托管和协作。
刚开始学习 Git,不要追求一次掌握所有命令。
先把 add -> commit -> push -> pull 这条主线练熟,再逐步学习分支、合并、冲突解决和版本回退。
等这些流程真正用顺手后,Git 就不再是难点,而会变成你每天开发中最可靠的版本管理工具。