
1. Gitee代码提交基础概念Gitee作为国内主流的代码托管平台其核心功能与GitHub类似但针对国内开发者做了优化。代码提交是日常开发中最频繁的操作之一理解其完整流程对团队协作至关重要。Git版本控制系统采用分布式架构每个开发者本地都拥有完整的仓库副本。提交代码时实际上是先提交到本地仓库再通过push操作同步到远程Gitee仓库。这种设计使得开发者可以在离线状态下继续工作待网络恢复后再同步变更。注意Gitee的免费版对私有仓库协作人数有限制最多5人企业开发需注意选择合适的套餐1.1 本地仓库与远程仓库的关系当我们在Gitee上创建新仓库时会生成一个远程仓库地址通常以https://gitee.com/开头。开发者需要先在本地初始化Git仓库然后通过git remote add命令将本地与远程仓库建立关联。常见的两种关联方式HTTPS协议适合新手每次push需要输入账号密码SSH协议需要配置密钥但操作更安全便捷# 初始化本地仓库 git init # 添加远程仓库将repository-url替换为实际Gitee仓库地址 git remote add origin repository-url2. 完整代码提交流程详解2.1 准备工作环境配置与仓库克隆对于新加入项目的开发者首先需要克隆远程仓库到本地git clone https://gitee.com/username/repository.git cd repository克隆完成后会自动创建与远程仓库的关联无需手动添加remote。建议在克隆前确认已安装最新版Git推荐2.30版本配置了正确的用户信息git config --global user.name YourName git config --global user.email youremail.com2.2 日常开发中的代码提交步骤典型的代码修改提交流程包含以下环节创建或切换到开发分支避免直接修改main/master分支git checkout -b feature/new-function修改代码后查看变更状态git status将修改添加到暂存区git add . # 添加所有修改 # 或指定文件 git add src/main.js提交到本地仓库git commit -m feat: 实现用户登录验证功能推送到远程Gitee仓库git push origin feature/new-function专业提示commit message应遵循约定式提交规范Conventional Commits便于生成变更日志2.3 使用IntelliJ IDEA可视化提交对于使用JetBrains系列IDE的开发者可以完全通过GUI界面完成提交在Version Control面板Alt9查看变更文件右键文件选择Add to VCS或直接点击填写Commit Message后点击Commit按钮通过Git → Push菜单项推送变更IDEA还提供差异对比查看CtrlD部分文件提交选择特定文件后再Commit提交前代码分析在Commit对话框勾选Analyze code3. 高级提交场景处理3.1 处理提交冲突的完整流程当多人修改同一文件时push操作可能会被拒绝并提示冲突。解决方法先拉取最新代码git pull origin feature/new-functionIDE会标记冲突文件手动解决冲突搜索标记重新添加解决后的文件git add conflicted-file.js继续完成提交git commit -m fix: 解决登录验证冲突 git push origin feature/new-function3.2 修改历史提交的几种方式情况1修改最后一次提交git commit --amend # 修改message后保存退出 git push origin feature/new-function --force情况2交互式变基修改多个提交git rebase -i HEAD~3 # 在编辑器中将pick改为edit # 对每个标记为edit的提交执行 git commit --amend git rebase --continue警告修改已推送的历史提交需要使用--force参数团队协作中应谨慎使用3.3 选择性提交技巧有时我们只想提交部分修改而非全部文件交互式添加逐个选择变更片段git add -p使用IDE的Partial Commit功能在IDEA中选中文件的特定变更行右键选择Commit Selected Lines4. Gitee特色功能与最佳实践4.1 Gitee Pages的自动化部署Gitee提供静态网站托管服务可通过提交代码自动更新仓库根目录添加.gitee/conf.yamlpages: build: npm run build output: dist每次push到master分支后会自动构建部署4.2 代码提交统计与分析Gitee企业版提供丰富的代码统计功能成员提交活跃度代码行数变化趋势提交时间分布个人开发者可以通过以下命令获取基础统计# 查看所有贡献者提交统计 git shortlog -sn # 查看指定开发者代码行数变化 git log --authorusername --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf added lines: %s, removed lines: %s, total lines: %s\n, add, subs, loc }4.3 开源许可证选择建议在Gitee创建开源项目时常见许可证选择许可证类型适用场景Gitee推荐指数MIT允许商用修改只需保留版权声明★★★★★Apache 2.0需要专利授权的中大型项目★★★★GPL-3.0要求衍生作品必须开源★★★AGPL-3.0云服务场景下的强copyleft★★建议在项目根目录添加LICENSE文件并在README中明确声明。5. 常见问题排查指南5.1 提交被拒绝的典型原因权限不足检查是否被添加为仓库成员确认SSH密钥是否正确配置分支保护规则限制尝试创建新分支而非直接push到受保护分支联系管理员添加你为白名单用户存储空间不足Gitee免费账户有1GB容量限制使用git gc清理本地仓库历史5.2 找回丢失的提交如果误操作导致提交丢失可通过以下步骤尝试恢复查找丢失的提交哈希git reflog基于哈希创建新分支git branch recovery-branch abc1234合并回原分支git checkout main git merge recovery-branch5.3 大文件提交失败处理Gitee默认限制单个文件不超过100MB使用Git LFS管理大文件git lfs install git lfs track *.psd git add .gitattributes或配置.gitignore排除大文件对于历史中的大文件使用BFG工具清理java -jar bfg.jar --strip-blobs-bigger-than 100M my-repo.git6. 企业级开发规范建议6.1 分支管理策略推荐采用Git Flow变种方案master生产环境对应分支仅接受合并请求develop集成测试分支feature/*功能开发分支hotfix/*紧急修复分支示例创建流程git checkout -b feature/user-auth develop # 开发完成后... git checkout develop git merge --no-ff feature/user-auth6.2 代码审查流程优化在Gitee上配置保护分支规则要求Pull Request至少1个审核通过需通过CI检查使用pre-commit钩子自动检查# .pre-commit-config.yaml repos: - repo: https://gitee.com/mirrors/pre-commit-hooks rev: v3.4.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer6.3 CI/CD集成实践Gitee提供基于Gitee Go的CI服务配置示例# .gitee-ci.yml stages: - build - test build-job: stage: build script: - npm install - npm run build test-job: stage: test script: - npm run test关键配置项缓存依赖目录加速构建设置环境变量区分测试/生产环境配置构建成功后的通知方式7. 跨平台开发注意事项7.1 Windows与Unix换行符问题不同系统默认换行符(CRLF/LF)可能导致大量虚假变更统一仓库配置git config --global core.autocrlf input在项目根目录添加.gitattributes* textauto *.sh text eollf7.2 文件编码规范建议采用UTF-8编码统一标准在IDE中设置项目文件编码IntelliJ IDEA: File → Settings → Editor → File EncodingsVS Code: 通过.vscode/settings.json配置对于历史遗留GBK文件使用iconv转换iconv -f GBK -t UTF-8 src/oldfile.js src/newfile.js7.3 多仓库协作方案当项目依赖多个Gitee仓库时使用Git Submodulegit submodule add https://gitee.com/team/common-lib.git libs/common或采用Monorepo结构使用工具管理LernaJavaScript生态Bazel大型跨语言项目8. 安全与权限管理8.1 SSH密钥最佳实践生成ED25519算法密钥比RSA更安全ssh-keygen -t ed25519 -C youremail.com在Gitee账户设置中添加公钥测试连接ssh -T gitgitee.com8.2 敏感信息防护绝对禁止提交的内容密码/API密钥证书私钥配置文件中的数据库连接字符串解决方案使用环境变量管理敏感信息添加至.gitignore/config/secrets.json /.env对于已提交的历史记录使用git filter-repo清理git filter-repo --replace-text (echo passwordREDACTED)8.3 双因素认证配置在Gitee账户安全设置中启用手机APP验证如Google Authenticator备用验证码下载保存配置可信设备免验证9. 性能优化技巧9.1 加速克隆大型仓库仅克隆最新历史git clone --depth1 https://gitee.com/large-repo.git使用partial clone过滤不需要的文件git clone --filterblob:none https://gitee.com/large-repo.git9.2 仓库瘦身方法识别大文件git rev-list --objects --all | git cat-file --batch-check%(objecttype) %(objectname) %(objectsize) %(rest) | awk /^blob/ {print substr($0,6)} | sort --numeric-sort --key2 | tail -n 20使用BFG清理java -jar bfg.jar --strip-blobs-bigger-than 10M my-repo.git强制推送清理后仓库git push origin --force --all9.3 日常维护命令定期压缩仓库git gc --aggressive重新建立索引git repack -a -d --depth250 --window250检查仓库健康状态git fsck --full10. 与其他平台协同工作10.1 从SVN迁移到Gitee创建作者映射文件authors.txtsvn-user1 Git User1 user1email.com执行迁移git svn clone --stdlayout --authors-fileauthors.txt https://svn.example.com repo cd repo git remote add gitee https://gitee.com/your/repo.git git push gitee --all10.2 与GitHub同步添加GitHub为第二个远程git remote add github https://github.com/user/repo.git设置push默认推送到两个仓库git remote set-url --add --push origin https://gitee.com/user/repo.git git remote set-url --add --push origin https://github.com/user/repo.git10.3 AtomGit与Gitee对比主要差异点特性GiteeAtomGit服务器位置中国大陆海外访问速度快可能较慢开源许可证支持全面有限支持CI/CDGitee GoGitHub Actions大文件支持Git LFS相同企业功能完善基础选择建议国内团队优先Gitee国际项目考虑AtomGit