当前位置: 首页 > news >正文

项目代码从0到1上传到Git的完整步骤,涵盖单项目和多项目两种场景

以下是将本地Android、前端、后端、嵌入式四个项目代码从0到1上传到GitLab的完整步骤:

一、前期准备
安装Git‌:在电脑上下载并安装Git(官网),安装完成后在终端输入git --version验证是否安装成功。
注册GitLab账号‌:前往GitLab官网注册账号并完成邮箱验证。
生成SSH密钥(推荐)‌:
打开终端,输入ssh-keygen -t ed25519 -C "你的邮箱地址",一路回车生成密钥
复制公钥内容(cat ~/.ssh/id_ed25519.pub),登录GitLab后,在‌用户设置-SSH密钥‌中添加,实现免密登录
二、单项目上传流程(以Android项目为例,其他项目操作一致)
初始化本地仓库‌
打开项目根目录(包含build.gradle或settings.gradle的目录),在终端执行:
bash
Copy Code
git init

配置.gitignore‌
在项目根目录创建.gitignore文件,添加需要忽略的文件(如Android的build/、gradle/、local.properties等),示例内容:
text
Copy Code
# Android项目忽略文件
build/
gradle/
local.properties
.gradle/
*.iml

添加并提交文件‌
bash
Copy Code
# 添加所有需要跟踪的文件
git add .
# 提交代码,-m后跟提交说明
git commit -m "初始化Android项目仓库"

创建远程仓库‌
登录GitLab,点击左上角‌+‌选择‌新建项目‌,设置仓库名称(如android-project)、选择公开/私有,无需勾选初始化README,点击创建。
关联远程仓库‌
在本地项目根目录执行(将<远程仓库地址>替换为实际地址,GitLab默认分支为main):
bash
Copy Code
git remote add origin <远程仓库地址>

推送代码到远程‌
bash
Copy Code
git push -u origin main

三、多项目管理方案

如果需要将四个项目关联管理,推荐使用Git Submodule或Monorepo方案:

Git Submodule(子模块)‌
在一个空的主仓库中,将其他项目作为子模块添加:
bash
Copy Code
git submodule add <android远程仓库地址> android
git submodule add <前端远程仓库地址> frontend
git submodule add <后端远程仓库地址> backend
git submodule add <嵌入式远程仓库地址> embedded
git commit -m "添加四个项目子模块"
git push origin main

其他开发者克隆主仓库时,需执行git submodule update --init --recursive拉取子模块代码
Monorepo(单仓库多项目)‌
在主仓库中创建独立目录存放每个项目:
text
Copy Code
/monorepo
├── /android
├── /frontend
├── /backend
└── /embedded

分别在每个项目目录初始化本地仓库,再将整个monorepo目录作为仓库提交到远程
四、GitLab专属注意事项
仓库权限‌:确保你对创建的仓库拥有Owner或Maintainer权限,避免推送时权限不足
大文件处理‌:如果嵌入式项目有大体积的固件文件,建议使用Git LFS(Git Large File Storage),需先在GitLab开启LFS支持并安装客户端
CI/CD配置‌:如果项目需要自动化构建,可在每个项目根目录添加.gitlab-ci.yml配置文件,实现代码提交后自动构建、测试

如果需要针对某个项目的特殊配置(如前端的Vite项目、嵌入式的裸机代码)提供更细致的上传方案,或者想了解GitLab的代码审核、分支保护等高级功能,可以随时告诉我~

http://www.jsqmd.com/news/537737/

相关文章:

  • 计算机毕业设计:基于Python的美食数据采集可视化系统 Django框架 Scrapy爬虫 可视化 数据分析 大数据 机器学习 食物 食品(建议收藏)✅
  • C++线程异步和wpf中比较
  • 阿里大模型二面真题:RAG系统评估指标详解(非常详细),从入门到精通,收藏这一篇就够了!
  • vLLM-v0.17.1部署教程:vLLM + Telegraf+InfluxDB指标采集体系搭建
  • 揭秘大数据领域分布式计算的高效实现策略
  • 用 Codex 接管当前 Chrome 调试会话:Chrome DevTools MCP 实战指南
  • Python服务OOM频发却查无实据?(2024最新内存检测工具矩阵深度评测:准确率/开销/兼容性三维打分)
  • MusePublic商业应用实战:快消品牌季度视觉内容AI辅助生产流程
  • 零样本学习进阶:RexUniNLU小样本微调技巧
  • 仓颉STS-beta先锋招募进行中 | Cangjie 1.1.0-beta.24 已发布,快来一起捉虫吧~
  • SDMatte开源模型贡献指南:如何提交PR改进透明物体识别模块
  • 2026年阿通移动头式裁断机/裁断机/液压裁断机/摇臂裁断机厂家推荐哪家好 - 行业平台推荐
  • 银行回单识别技术:融合计算机视觉与自然语言处理,实现对多版式回单的高精度解析
  • 基于Android手机的语音数据采集系统(语音数据自动上传至电脑端)
  • 2026年建议收藏|顶流之选的AI论文平台——千笔ai写作
  • Qwen3-32B-Chat镜像性能实测:OpenClaw长任务稳定性优化方案
  • 如何用MelonLoader打造个性化Unity游戏体验:从安装到精通的完整指南
  • GME-Qwen2-VL-2B-Instruct一文详解:Streamlit状态管理实现多轮图文比对
  • SEO_中小企业如何低成本做好SEO?实战经验分享
  • 广东五大最推荐的美容仪器美容仪器加工厂家是哪些?2026年广州等地市场选择排名发布 - 十大品牌榜
  • C++的std--ranges缓存局部性
  • 多语言语音生成实战:用Fish Speech 1.5制作国际化视频配音
  • Python 2026:当“慢”不再是标签,它变成了什么?
  • 终极指南:如何用KKManager轻松管理Illusion游戏Mod
  • 解密ASCII艺术生成器:从像素到字符的魔法转换实战
  • 一篇搞懂前后端所有的“器”
  • ViGEmBus:重新定义游戏控制器模拟的内核级解决方案
  • 如何通过跨平台下载工具轻松获取Steam创意工坊模组:WorkshopDL完全指南
  • python的数据类型
  • 用过才敢说!盘点2026年万众偏爱的一键生成论文工具