1. 为什么你需要这份Gitee上传指南?
第一次把本地项目推送到Gitee的经历,我至今记忆犹新。那是个周末的深夜,我对着满屏的报错信息,第17次尝试执行git push命令。Permission denied、fatal: remote origin already exists、rejected - non-fast-forward...这些红色错误提示像一堵墙,把我和代码仓库隔在了两个世界。
后来我才明白,大多数Git教程都默认你已经掌握了:
- 命令行环境的基本操作
- SSH密钥的生成配置逻辑
- 远程仓库与本地分支的映射关系
- 文件暂存区的概念
而现实是,80%的新手会在这些基础环节卡住。这份指南将用最直白的语言,带你完整走通从本地文件夹到Gitee仓库的全流程,重点标注那些官方文档不会写的"魔鬼细节"。
提示:本文所有操作均在Windows 11 + Git 2.40环境下验证通过,但核心逻辑适用于所有平台
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 前期准备:这些坑我已经替你踩过了
2.1 Git安装的隐藏关卡
官网下载的Git安装包(当前最新版2.40.1)有以下几个关键选择:
-
选择默认编辑器(Choosing the default editor)
- 新手强烈选择"Use Nano editor",而不是默认的Vim
- 否则当你需要写commit信息时,会陷入"如何退出Vim编辑器"的哲学困境
-
调整PATH环境(Adjusting your PATH environment)
- 选择第二项"Git from the command line and also from 3rd-party software"
- 这能确保在VSCode等IDE中也能正常调用Git
-
配置行尾转换(Configuring line ending conversions)
- Windows用户务必选择"Checkout Windows-style, commit Unix-style"
- 这是跨平台协作时最安全的选项
安装完成后,在任意位置右键选择"Git Bash Here",执行以下命令验证安装:
bash复制git --version
# 应显示类似 git version 2.40.1.windows.1 的版本信息
2.2 SSH密钥配置的玄学问题
Gitee支持HTTPS和SSH两种协议,但SSH才是长期使用的正确姿势。生成密钥时要注意:
- 在Git Bash执行:
bash复制ssh-keygen -t ed25519 -C "your_email@example.com"
- 不要用默认的rsa算法,ed25519更安全且兼容性足够
- 遇到"Enter file in which to save the key"直接按回车,使用默认路径
- 关键一步:启动ssh-agent
bash复制eval $(ssh-agent -s)
ssh-add ~/.ssh/id_ed25519
- 很多教程漏掉这步,导致后续操作报错"Permission denied"
- 将公钥内容粘贴到Gitee:
bash复制cat ~/.ssh/id_ed25519.pub
- 登录Gitee → 右上角头像 → 设置 → SSH公钥
- 标题随便写,内容粘贴刚才显示的全部文本(包括最后的邮箱)
验证连接:
bash复制ssh -T git@gitee.com
看到"Welcome to Gitee.com, YourName!"才算成功。
3. 从本地文件夹到Gitee仓库的完整流程
3.1 初始化本地仓库的注意事项
假设你的项目文件夹叫my-project,绝对不要直接在文件夹里右键"Git Init Here"。正确做法:
-
在文件夹内新建.gitignore文件
- 这是很多新手忽略的关键步骤
- 模板可以参考https://www.toptal.com/developers/gitignore
- 至少应该包含:
code复制# 系统文件 .DS_Store Thumbs.db # 开发环境 node_modules/ .env *.log
-
初始化仓库:
bash复制cd /path/to/my-project
git init
git add .gitignore # 先单独添加.gitignore
git commit -m "Initial commit with gitignore"
3.2 关联远程仓库的易错点
在Gitee创建新仓库时,注意:
- 不要勾选"使用README初始化仓库"
- 不要选择任何.gitignore模板
- 许可证可以后续再加
创建完成后,复制SSH地址(形如git@gitee.com:yourname/my-project.git),然后:
bash复制git remote add origin git@gitee.com:yourname/my-project.git
这里有个隐藏坑:如果你之前误操作过远程仓库配置,需要先执行:
bash复制git remote remove origin
3.3 首次推送的黄金法则
第一次push必须用这个命令:
bash复制git push -u origin master
- -u参数建立追踪关系,后续push可以简写为git push
- 如果Gitee仓库是空的,可以改用:
bash复制git push -u origin main
如果遇到"rejected - non-fast-forward"错误,说明远程仓库有你不包含的提交历史。此时应该:
bash复制git pull --rebase origin master
git push -u origin master
4. 日常开发中的高频场景解决方案
4.1 分支管理的实用技巧
- 创建并切换分支:
bash复制git checkout -b feature/login
- 分支名建议格式:类型/简短描述,如feature/login、fix/header-bug
- 查看当前分支:
bash复制git branch
- 带*号的是当前分支
- 加-v参数可以看到最近一次提交信息
- 推送本地分支到远程:
bash复制git push -u origin feature/login
- 第一次推送必须加-u参数
4.2 合并分支时的冲突处理
当你在master分支执行git merge feature/login遇到冲突时:
- 查看冲突文件:
bash复制git status
- 冲突文件会显示"both modified"
- 用编辑器打开冲突文件,会看到类似:
html复制<<<<<<< HEAD
<div class="old-class">
=======
<div class="new-class">
>>>>>>> feature/login
- 删除标记行,保留你想要的内容
- 标记冲突已解决:
bash复制git add 冲突文件路径
git commit
4.3 后悔药:撤销操作的几种姿势
- 撤销未暂存的修改:
bash复制git checkout -- 文件名
- 撤销已暂存未提交的修改:
bash复制git reset HEAD 文件名
- 修改最后一次提交:
bash复制git commit --amend
- 这会打开编辑器让你修改提交信息
- 如果只想修改文件,先git add再执行上述命令
5. 那些官方文档没告诉你的实战经验
5.1 提交信息的艺术
好的提交信息应该:
- 首行不超过50字符,简要说明变更
- 空一行后详细描述(可选)
- 使用现在时祈使语气,如"Fix login bug"而非"Fixed login bug"
示例:
code复制Add user authentication middleware
- Implement JWT token verification
- Add error handling for expired tokens
- Update API documentation
5.2 敏感信息的处理
永远不要提交:
- 配置文件中的密码/API密钥
- 用户隐私数据
- 系统密钥文件
如果不小心提交了,需要:
- 从历史记录中彻底删除:
bash复制git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch config/database.yml" \
--prune-empty --tag-name-filter cat -- --all
- 强制推送到远程:
bash复制git push origin --force --all
5.3 大型文件处理策略
Gitee对单个文件限制在100MB以内。处理大文件应该:
- 使用git-lfs(需额外安装):
bash复制git lfs install
git lfs track "*.psd"
git add .gitattributes
- 或添加到大文件忽略列表:
code复制# .gitignore
*.zip
*.rar
*.mp4
6. 进阶:与IDE的高效协作
6.1 VSCode中的Git可视化操作
- 安装GitLens插件(强烈推荐)
- 源代码管理视图可以:
- 直观看到文件变更状态
- 一键暂存/提交
- 查看每行代码的修改者和时间
- 分支管理:
- 左下角显示当前分支
- 点击可以切换/创建分支
6.2 IntelliJ IDEA的Git集成
- 提交代码时:
- 可以按目录/文件类型筛选变更
- 支持部分文件提交(勾选要提交的文件)
- 合并冲突解决工具:
- 三窗格对比(你的代码/合并结果/他们的代码)
- 一键接受某个版本
- 查看历史:
- 图形化显示分支演变
- 可以按作者/日期/文件过滤
6.3 Eclipse的Git插件EGit
- 比较常见的视图:
- Git Staging:管理暂存区
- Git Repositories:管理多个仓库
- 合并时:
- 支持合并策略选择
- 冲突编辑器提供左右对比
- 历史查看:
- 可以生成提交统计图表
- 支持按消息内容搜索提交
我在实际项目中最喜欢用VSCode处理日常提交,遇到复杂合并冲突时切换到命令行操作。记住一点:IDE的Git功能再强大,理解底层命令原理仍然是必要的。当GUI操作出现诡异问题时,往往需要回到命令行诊断真正的原因。
