直接说结论:如果你已经装了 PyCharm,但代码还停留在“本地能跑”的阶段,没有备份到 Gitee 或 GitHub 这类远程仓库,那这篇文章就是给你准备的。很多新手第一次在 PyCharm 里折腾 Git,卡在的不是写代码,而是“到底从哪儿开始”,网上教程要么只讲命令行、要么只讲某一个小环节,很少有人把“装 Git → 建仓库 → 配 PyCharm → 首次 Push → 日常操作”整条链路一次讲清楚。
我写这篇的定位很明确:不要求你懂底层原理,不考虑你之前有没有用过终端,跟着流程点鼠标就能完成第一次代码上传。核心场景就是“把 PyCharm 里的项目推送到远程仓库”,同时把日常开发最常用的提交、更新、分支操作一起讲掉,最后附上我实际踩过的坑。适合刚接触 Python、刚打开 PyCharm 还很迷茫的同学,也适合想从“只会手动复制代码”升级到“用 Git 管代码”的人。
1. 准备工作:装好 Git,建好远程仓库
1.1 为什么用 PyCharm 管理 Git,而不是只敲命令
先说一个经常被忽略的点:PyCharm 自己并不包含 Git,它是一个 Git 客户端,真正干活的还是你电脑上安装的 Git 程序。所以严格来说你需要做两件事:安装 Git 本体,然后在 PyCharm 里告诉它“你的 Git 在哪”。
很多人问我是不是用命令行人更专业,其实作为新手完全没必要有这种负担。PyCharm 的可视化操作用起来非常顺手,它底层也是帮你执行命令,但好处是不用记命令、不用怕打错,文件状态、分支切换、冲突解决都有图形界面辅助。先把图形化操作跑通,等有感觉了再去碰命令行,这是我认为对新手最友好的路径。
1.2 Windows 下安装 Git 的完整步骤
如果你是 Mac 用户,可以在终端输入brew install git,或者直接装个 Xcode Command Line Tools。但考虑到大部分初学者用的是 Windows,我重点讲 Windows 下 Git for Windows 的安装。
- 打开 Git 官网下载页面,下载对应系统版本的安装包。注意选 64 位版本。
- 双击安装包,一路点 Next。这里面有几个选项容易让新手迷糊,我逐个说明:
- Select Components默认即可,不需要改动。
- Adjusting your PATH environment默认选第二项 “Git from the command line and also from 3rd-party software”,保持默认就好。如果这里误选了第一项 “Use Git from Bash only”,后期 PyCharm 有可能识别不到 Git。
- Choosing HTTPS transport backend保持默认的 “Use the native Windows Secure Channel library”,不用改。
- Configuring the line ending conversions默认选第一项
Checkout Windows-style, commit Unix-style line endings,这个对大多数人最稳妥,尤其项目里如果还有其他人使用不同系统,能避免很多换行符引发的奇怪问题。
- 安装完成后,按
Win + R,输入cmd打开命令行,输入:
git --version如果能输出类似git version 2.40.0.windows.1,说明安装成功。如果提示“不是内部或外部命令”,大概率是刚才 PATH 那个选项没选对,重新走一遍安装流程即可。
设置 Git 全局身份信息,这一步很多人容易忽略,但如果不做,后面 commit 的时候 Git 会一直抱怨不知道“你是谁”,或者弹窗提示你补填信息。在命令行里执行:
git config --global user.name "你的名字" git config --global user.email "你的邮箱"这里填入的名字和邮箱不一定非得和 Gitee/GitHub 注册信息一模一样,但建议保持一致,这样代码提交之后,仓库里的贡献记录能正确关联到你的账号。可以使用拼音,无所谓。
1.3 在 Gitee 上创建远程仓库
远程仓库我以 Gitee 为例,原因很简单:国内访问速度快、界面中文、功能对新手足够,而且代码托管平台的操作逻辑和 GitHub 高度一致。你熟练之后切换到 GitHub 是无缝衔接的。
注册并登录 Gitee 后,点击右上角的“新建仓库”,进入仓库信息页面。有几项配置需要重点留意:
- 仓库名称:建议写英文,比如
my-first-project。仓库名称会出现在远程地址里,用英文和短横线最安全,别用中文和空格。 - 路径:你填的仓库名称会自动生成路径,一般不用管。
- 是否开源:私有仓库仅自己可见,公开仓库所有人可见。新手只是自己同步代码,选“私有”就行,以后想开放再改。
- 初始化仓库:如果你是完全新开始的项目,建议不要勾选“使用 Readme 文件初始化这个仓库”,也不要添加 .gitignore 和开源许可证。因为你在本地已经有代码了,远程创建了一个带初始提交的空仓库,第一次 push 时很容易出现两边历史不相关的问题,虽然能强制推送,但没必要给自己添麻烦。让 Gitee 先创建一个完全空的仓库,后面操作最顺。
创建完成之后,页面上会出现仓库地址,一个 HTTPS 协议地址,一个 SSH 协议地址,形如:
https://gitee.com/你的用户名/my-first-project.git git@gitee.com:你的用户名/my-first-project.git这两个地址需要记住,后面 PyCharm 里连接远程仓库时要用到。
2. 在 PyCharm 里完成 Git 配置与本地仓库初始化
2.1 让 PyCharm 找到 Git
打开你写代码的项目,进入顶部菜单栏File → Settings(Mac 上是PyCharm → Preferences),在弹出的设置窗口中,左边目录找到Version Control → Git。这里有一个Path to Git executable输入框,正常情况下 PyCharm 会自动检测到 Git 的安装路径,比如C:\Program Files\Git\bin\git.exe。
点击输入框右侧的Test按钮,如果弹窗显示 “Git executed successfully”,说明关联成功。如果没有自动识别,就手动点击文件夹图标,找到刚才安装 Git 的目录。如果你忘了装在哪,可以在命令行输入where git看到完整路径。
这里再强调一遍:如果这一步一直失败,检查重点就在 1.2 里说的 PATH 选项,重装 Git 时选择第二项,基本都能解决。
2.2 初始化本地仓库,别急着点 VCS
很多教程上来就叫你直接点VCS → Enable Version Control Integration,但新手容易忽略一个细节:PyCharm 本身对 Git 风格的操作有个概念叫 “VCS(Version Control System)”,虽然菜单写的是 VCS,但选项里选 Git 就行。点击VCS → Enable Version Control Integration,弹窗里选择Git,然后确认。
完成之后,你的项目文件会立刻出现颜色变化:红色表示未跟踪文件(还没被 Git 管理),绿色表示新增文件(已加入版本控制但还没提交),蓝色表示修改过的文件。如果你的项目没有任何颜色变化,那多半是初始化失败了,回到 2.1 重新检查 Git 路径。
这一步骤的本质,是告诉 Git “这个文件夹是我的仓库”,之后你在 PyCharm 里做的所有提交操作,都会记录在这个文件夹下隐藏的.git目录里。注意不要把项目到处移动位置,.git目录和项目文件是绑定在一起的,移动或者改名不会出大问题,但有可能影响 IDE 的识别。
2.3 先写好 .gitignore,和提交规则打招呼
正式第一次提交之前,有一件事我建议新手先做——创建.gitignore文件。这个文件的本质是告诉 Git:“哪些文件我不准备交给远程仓库,你直接无视它们。”
为什么需要它?因为一个 PyCharm 项目里,除了你自己的代码,还有大量 IDE 自动生成的配置文件和中间产物:
.idea/:PyCharm 自己的工程配置目录,里面是你的编辑器偏好、运行配置等,这种东西每个开发者的电脑可能都不一样,推到仓库纯属制造噪音。__pycache__/:Python 运行时会生成缓存文件,完全没必要提交,又快又容易产生冲突。venv/或.venv/:虚拟环境目录,体积巨大,别人克隆你的项目后需要自己创建环境。*.pyc:Python 编译缓存。
在项目根目录下新建文件,命名为.gitignore(注意它没有文件名前缀,就是点开头的)。文件内容可以参考:
.idea/ __pycache__/ venv/ .venv/ *.pyc .DS_Store创建之后,你会发现 PyCharm 对这些文件的状态标识立刻发生了变化,比如之前红色的.idea文件夹现在可能直接变成灰色,表示已被忽略。这个文件本身则会显示为未跟踪的待添加文件,它也应该提交到仓库。
顺便说一句,如果你创建远程仓库的时候用的是 Gitee 自动初始化的模板,它可能会自带一份巨长的 .gitignore,但未必匹配你的技术栈,自己创建反而更可控。
3. 第一次从 PyCharm 推送到远程仓库
3.1 添加远程地址:HTTPS 还是 SSH
现在进入核心环节。在 PyCharm 顶部菜单栏点击Git → Manage Remotes...,弹窗里可以看到远程仓库列表,一开始是空的。点击加号,输入名字origin,URL 框里粘贴你之前在 Gitee 复制的仓库地址。
这里要决定是走 HTTPS 还是 SSH:
- HTTPS 地址:新手最容易上手,输入账号密码或者私人令牌即可。缺点是每次 push/pull 都要认证,除非你额外配置缓存,否则挺烦。
- SSH 地址:只要配置一次密钥,之后就不需要反复输密码了,体验更顺。但首次配置密钥对新手来说多几个步骤。
我的建议是:第一次用它先体验完整流程,直接用 HTTPS 地址。等到“提交—推送”的链路走通了,再回头升级 SSH。
3.2 如果你想用 SSH:密钥生成与添加
如果你决定一步到位用 SSH,步骤如下。先在命令行执行:
ssh-keygen -t rsa -b 4096 -C "你的邮箱"一路回车即可,它会生成两个文件:私钥id_rsa和公钥id_rsa.pub,默认存放在用户目录下的.ssh文件夹里。私钥自己留着,公钥需要交给代码托管平台。
进入 Gitee 的“个人设置 → SSH 公钥”,把.ssh目录里id_rsa.pub文件的内容完整复制粘贴进去,标题随意。之后在 PyCharm 的远程地址里填 SSH 格式的地址,第一次连接时如果提示是否信任主机,选择 yes 即可。之后推送就不再需要输入账号密码了。
3.3 Commit 和 Push 到底先点哪个
这是新手最容易困惑的地方:Commit 和 Push 是两个不同的动作。
- Commit:把文件保存到本地仓库,相当于给自己做一个“存档”,只存在你的电脑里。
- Push:把本地存档同步到远程仓库,别人才能看到,才算真正的备份。
在 PyCharm 右侧工具窗口栏,找到Commit窗口(一般在左侧,图标像一个对勾)。打开后你会看到所有待提交文件,默认全部打勾。第一次提交前,检查一下有没有不该提交的垃圾文件,比如.idea目录或__pycache__。如果你在 2.3 写了. gitignore,它们不会出现在这里。
在 Commit Message 输入框里写清楚这次改了什么。我第一次写的是init project,简单明了。然后有两种选择:
- 点击
Commit按钮:只提交到本地。 - 点击
Commit and Push...按钮:提交完直接进入推送弹窗。
新手第一次操作,可以直接点Commit and Push...,一气呵成。如果点的是Commit,后续需要再点击右上角的向上箭头图标(Push),或者菜单栏Git → Push。
Push 弹窗里会显示要推送的分支和远程目标,保持默认。点击Push按钮后,如果是 HTTPS 地址,会弹窗让你输入 Gitee 的用户名和密码;如果一直弹出“认证失败”,看下一部分,大概率是密码输入问题。看到底部出现黑色的Push successful提示,第一次推送就算完成了。
3.4 刷新远程仓库,确认代码上传成功
推送完成之后,回到 Gitee 的仓库页面,刷新浏览器。正常情况下你会在文件列表里看到和本地一致的文件结构,包括你的.gitignore。如果只显示.gitignore没有代码文件,说明你刚才 Commit 时没有勾选 Python 文件,回到 PyCharm 重新检查提交内容。
有同学问过我:远程仓库显示一堆“提交记录”是什么意思?简单理解就是 Git 记录了你每次提交的快照信息,点击进去可以看到这次提交改动了哪些文件。这个能力在你以后回滚代码、排查 bug 时非常有用,所以 commit message 尽量写得有意义。
4. 日常开发中的 Git 操作节奏
4.1 Commit Message 怎么写才不算白写
先说说提交信息,这是我在 code review 时最看重的东西之一。新手常见的提交信息长这样:update、修改、bug修复、123。说实话,这些写完一个月后你自己都看不懂当时改了什么,更别说合作者了。
一个简单实用的格式是:类型: 简述内容。比如:
feat: 添加用户登录接口 fix: 修复列表页加载超时问题 docs: 更新 README 使用说明 refactor: 重构订单状态判断逻辑其中feat表示新功能,fix表示修 bug,docs表示文档变化,refactor表示代码重构但不影响功能。这套规范叫 Conventional Commits,很多团队直接沿用。新手就算不弄这么正式,至少养成“每次提交只做一件小事,写清楚做完了什么”的习惯。
有了这个习惯,你的提交记录就像一本清晰的开发日志,哪天某个功能出了问题,可以快速定位到是哪一次改动引入的。
4.2 Pull 和 Push:先拉后推,避免冲突
在你用 Git 管理代码一段时间后,会遇到一个经典场景:你在本地改了代码,正准备推送,结果 PyCharm 弹出一行红色提示:Push rejected。原因是远程仓库里有你本地没有的记录——很可能是你在另一台电脑上提交过,或者别人也推了代码。
这时候不要慌,也不要尝试去强制推送。先执行 Pull(拉取)。在 PyCharm 顶部Git → Pull,把远程最新的提交拉下来。如果没有冲突,它会被自动合并到你的本地代码里,然后你再正常 Push 就成功了。
如果出现冲突,PyCharm 会弹出一个冲突解决界面,左边是远程版本,右边是本地版本,中间是合并结果。你需要逐行决定保留哪边:可以保留当前改动,可以接受远程改动,也可以手动编辑。新手看到冲突界面容易发怵,其实没那么可怕,冲突文件往往很少,而且界面很直观。
不过我有个经验建议:在可能多人协作的项目里,推送之前养成先 Pull 再 Push 的习惯,能少掉八十%的冲突。
4.3 分支:别把所有改动都堆在主线上
在 PyCharm 右下角可以看到当前分支名,默认是main或master。点击它,选择New Branch,输入一个分支名字,比如feature-login,当前项目就会切换到新分支。之后你的所有提交都在这个分支上进行,不会影响主线。
为什么需要这个?因为你在开发新功能时,代码往往是半成品,如果直接在主线上提交,后续主线可能一直处于不可运行的状态。开一个功能分支,把实验性改动都放进去,等功能稳定之后再合并回主线,这是一种非常健康的开发节奏。
合并操作也不复杂:先切换到目标分支(比如主分支),点击Git → Merge…,选择你要合并进来的分支即可。如果没冲突,一键完成。
4.4 文件颜色代表的状态,值得记住
PyCharm 里文件颜色的变化是最直观的提示,我建议新手先把它当成一种“第六感”来训练:
- 红色:文件还没有被 Git 跟踪,也就是新建之后还没 add 过。
- 绿色:文件已经处于暂存区,等待提交。
- 蓝色:文件已被跟踪,并且当前内容和上一次提交不同。
- 灰色:路径被 .gitignore 忽略。
看到这些颜色,你基本不用敲命令也能知道项目当前处于什么阶段。如果你改了某个文件但它一直没变蓝色,检查一下是不是被其他窗口覆盖了,PyCharm 默认是自动刷新的,但偶尔需要File → Reload All from Disk强制刷新一次。
4.5 克隆项目:换电脑后怎么把代码拉下来
假如你换了一台电脑,或者想在公司电脑上继续写家里没写完的代码。这时候不用从头创建项目,直接点 PyCharm 首页的Get from VCS(版本控制系统获取),选择 Git,粘贴远程仓库地址,选择本地保存路径,点击 Clone 即可。克隆和推送是逆操作:Clone是把远程仓库复制到本地,Push是把本地改动送回远程。
克隆时如果仓库是私有仓库,同样需要认证:HTTPS 输入账号密码/令牌,SSH 则要求新电脑也配置了相同的私钥。
5. 新手最常遇到的 5 个坑和排查方法
5.1 Push rejected: Failed to push some refs
这个报错出现的频率最高,本质是远程和本地存在分叉。很多人的第一反应是不知道怎么处理,甚至有人去搜索“强制推送”,这非常危险,会有覆盖线上代码的风险。正确做法是:先Git → Pull,让本地合并远程的改动,再 Push。如果 Pull 时提示要写合并信息,默认保存退出即可。
5.2 Authentication failed 认证失败
这个问题在 GitHub 上最典型,因为在 GitHub 上已经不支持用账号密码直接 Push 了,必须用 Personal Access Token(个人访问令牌)代替密码。Gitee 也陆续开启了类似的限制,某些仓库要求使用私人令牌。
解决办法:去 Gitee 的“个人设置 → 私人令牌”,生成一个新令牌,复制这串字符串,在 PyCharm 弹出密码输入框时,粘贴令牌而不是注册密码。注意令牌只显示一次,忘了就重新生成。如果你之前填错了,PyCharm 会在Settings → Appearance & Behavior → System Settings → Passwords里保存了旧的认证信息,删除或清理后再试。
5.3 Couldn't find Git installed
这类提示一般是 PyCharm 找不到 Git 程序。检查一下 Git 是否真的安装了,如果安装了但 PyCharm 还是提示,就在Settings → Version Control → Git里手动指定 git.exe 路径。如果路径正确但仍然失败,试试重启 PyCharm。重置大法在这里真的管用。
5.4 fatal: detected dubious ownership in repository
这个报错在 Windows 上偶发,原因是 Git 认为当前目录的所有权和当前用户对不上,它怀疑你可能被引导访问了别人的仓库。解决办法是在命令行里执行:
git config --global --add safe.directory *这是“信任该目录”的意思。如果等级更严重,可以先检查这个目录是不是你自己创建的,文件来源没有问题再添加信任。
5.5 远程分支名和本地分支名对不上
我见过不少新手在推送时,右下角提示本地分支是master,但远程仓库默认主分支叫main。推送时 PyCharm 弹窗里会自动匹配,如果你点错选项,可能推不上去。简单处理方法:推送弹窗中手动把远程分支改成origin main;或者在本地执行分支重命名:
git branch -m master main然后重新推送。这个坑我觉得值得提一下,因为它不是代码错误,纯粹是“分支命名习惯不一致”引发的。
5.6 push 成功后代码在网站上不显示
大概率是浏览器缓存没刷新,因为 Gitee 页面不会自动实时更新,尤其是文件列表页。强制刷新页面(比如Ctrl + F5)基本就能看到。如果一直不显示,回到 PyCharm 检查推送输出日志里是否真的成功,别被“部分文件没推送成功”这种假象骗了。
写在最后
踩过几次坑之后,我最大的体会是:Git 难的不是命令,而是概念——提交、分支、远程、本地这些心智模型,一旦在脑子里串起来了,剩下的一切都是查工具和练习。而 PyCharm 作为图形化客户端,非常适合新手建立这种模型,因为你能直观看到文件状态变化、分支切换、冲突合并的过程。
我建议新手不要一上来就把所有功能都试一遍,只做一件事:把代码提交到远程仓库,然后每天写完之后养成Commit and Push的习惯。这个习惯坚持两周,你自然会感受到版本管理带来的安全感——代码不会轻易丢,改坏了能回滚,想开新思路就开分支。之后再去碰命令行、写高级玩法,那都是水到渠成的事。