Git基础与开发平台搭建

Git

基础

  • 创建分支,git branch 新分支名:在 当前提交 (即 HEAD 指向的 分支名 所在的那个 提交)上,创建一个新的 新分支名
  • 切换分支,git checkout 目标分支名:将 HEAD 移动,使其指向 目标分支名
  • 提交,git commit:基于 当前提交 ,创建一个新 提交 (圆圈) ,并让 HEAD 指向的 分支名 移动并指向这个新 提交
  • 合并分支,git merge 目标分支名:将 目标分支名 所在的 提交当前提交 合并,创建下一条新的 提交(圆圈) ,并让 HEAD 指向的 分支名 移动并指向这个新 提交
  • 变基,git rebase 目标分支名:将 HEAD 指向的 分支名 及其所在的 提交 (圆圈) ,转而连接到 目标分支名 所在的 提交 后面。

"HEAD 指向" 即*标注

远程

"远程"就是指存放在公司服务器(比如 GitLab)上的那个中心仓库。你和同事都要把自己的提交 传到那里,或者从那里拉取别人的提交

我们先引入两个关于远程的新概念:

  1. 远程仓库名 :通常默认叫 origin,它是服务器网址的"快捷标签"。
  2. 远程分支名 :通常叫 origin/main,它是本地用来记录 "服务器上的 main 分支名 当前指向哪个提交 " 的只读标签

工作中最常用的 4 个远程命令(用统一指代词解释):

  1. 下载整个项目:git clone 网址

    把服务器上的所有提交(圆圈)分支名 下载到本地。同时自动给服务器网址贴上远程仓库名 origin 的标签。

    (这是第一次拿到项目代码时做的第一件事。)

  2. 获取同事的最新进度:git fetch 远程仓库名

    去服务器检查有没有新的提交 。如果有,下载下来,并更新本地的远程分支名 (如 origin/main),让它指向服务器上的最新提交

    fetch 只是下载和更新只读标签,不会 改变你的当前提交,非常安全。)

  3. 拉取并合并同事的代码:git pull 远程仓库名 远程分支名

    它是 git fetchgit merge 的结合体。 把服务器上的新提交 下载下来,合并分支,生成下一条全新提交,并让本地分支名(及其HEAD)移动,指向这个新生成的提交。

    (通俗说:同事写了新代码推到服务器了,你每天上班第一件事就是 pull 下来,和你的代码合并。)

    解冲突:合并时揉合代码,如果你们俩碰巧改了同一个文件的同一行代码,Git 就懵了,会提示"冲突",需要手动决定保留谁的,即"解冲突"

  4. 上传你的代码给同事:git push 远程仓库名 本地分支名

    把你本地的分支名 上的新提交 上传到服务器,并让服务器上的同名分支名 移动指向这些新提交

    (通俗说:你写完代码,测试没问题了,push 到服务器上,同事就能看到你的代码了。)

前后端项目本地环境搭建与启动

本文按真实执行先后顺序整理

全流程导览

  1. 阶段一:环境自检 --- 验证本地 JDK 17+ 与 Node.js 18+ 环境。
  2. 阶段二:代码检出 (Git Clone) --- 拉取前后端两个项目仓库。
  3. 阶段三:后端项目准备 (IDEA) --- 依次完成以下准备:
    1. 配置 Maven 私服 settings.xml
    2. 向公司获取中间件连接信息(MySQL/Redis/Nacos)。
    3. Navicat 建库并导入 SQL 脚本(含多数据源 gr_wms_* 库)。
    4. Nacos 建专属 Namespace 并克隆、修改 IP 配置。
    5. 修改本地 bootstrap.yml(密码加引号、填 Namespace ID)。
    6. IDEA 配置 VM 参数及 Shorten 命令行。
    7. 按顺序启动微服务(Gateway → Compose 聚合)。
  4. 阶段四:前端项目启动与联调 (Vue3) --- 依次完成以下准备:
    1. 配置 npm 私服 registry。
    2. 使用 npm install --legacy-peer-deps 安装依赖。
    3. 放行 esbuild/core-js 脚本。
    4. 修改 .env.development 代理指向 localhost:30000
    5. 执行 npm run dev 启动项目。
  5. 完成 --- ✅ 前后端联调成功。

启动顺序:基础设施(远程 Nacos/MySQL/Redis)就绪 ➜ 后端服务(网关和业务,顺序随意) ➜ 前端项目

阶段一:本地环境自检

在开始拉取代码前,必须确保本地的运行环境满足项目要求。打开命令行终端

1. 验证后端 JDK (要求 17+)

bash 复制代码
java -version
  • 达标 :输出包含 "17.x.x" 或更高版本(如 21)。
  • 不达标:需前往 Oracle 或 Adoptium 官网下载 JDK 17/21 安装包并配置环境变量。

2. 验证前端 Node.js (要求 18+)

bash 复制代码
node -v
  • 达标 :输出 v18.x.x 或更高版本(如 v20, v24)。
  • 不达标/未安装 :前往 Node.js 官网下载页 ,选中 LTS (长期支持版) (默认),点击 Windows Installer (.msi)(这是node-v24.18.0-x64下载链接)下载安装包,一路 Next 安装。

注意:Node.js 安装完成后,必须关闭当前 cmd 窗口重新打开 ,环境变量才会生效。重新打开后再执行 node -v 确认。

阶段二:代码检出(Git Clone)

1. 建立工作目录

建议在非系统盘(如 D 盘)创建专门文件夹,例如 D:\work_code

2. 拉取前后端项目

D:\work_code 文件夹顶部路径栏清空内容、输入 cmd 回车,可直接定位到该目录的命令行:

bash 复制代码
# 拉取后端(Spring Cloud 微服务)
git clone https://gitlab.xxx.com/xxx/jkkj-java-cloud.git
# 拉取前端(Vue3 + Vite)
git clone https://gitlab.xxx.com/xxx/jkkj-base-template-vue3.git

预期结果:

只要后续出现 Receiving objects: 100% 即代表成功。

  • D:\work_code 文件夹新增两个文件夹jkkj-java-cloudjkkj-base-template-vue3 (所拉取链接对应的名字)。
  • 若提示输入密码,输入 GitLab 账号密码(如果输入密码时屏幕不显示字符,盲打完回车即可)。

阶段三:后端项目准备(IDEA + Spring Cloud)

1. 配置 Maven 私服(让 IDEA 能下载公司依赖)

一、找到 Maven 的配置文件路径

  1. 在 IDEA 顶部菜单栏,点击 File -> Settings
  2. 在左侧菜单依次展开:Build, Execution, Deployment -> Build Tools -> Maven
  3. 看右侧的 User settings file(用户配置文件)这一行。
  4. 它后面通常会显示一个路径,比如:C:\Users\32804.m2\settings.xml
  5. 重点 :勾选它后面的 Override(覆盖)复选框。
  6. 记住这个路径 ,我们等下要去修改这个文件。点击右下角的 Apply,先别关窗口。

二、修改配置文件,接入公司私服

  1. 打开电脑的"文件资源管理器",找到刚才那个路径(比如进入 C:\Users\32804\.m2 文件夹)。
  2. 看看里面有没有一个叫 settings.xml 的文件。
    • 如果有:右键 -> 打开方式 -> 选择"记事本"。
    • 如果没有 :在空白处右键 -> 新建 -> 文本文档,命名为 settings.xml(改后缀),然后用记事本打开。
  3. 把里面的内容全部清空 ,然后复制并粘贴下面这段配置代码模版(已经把maven私服地址写进去了,填写账号密码):
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                              http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- 私服认证:id 必须与下方 mirror 的 id 完全一致 -->
    <servers>
        <server>
            <id>company-nexus</id>
            <username>Maven私服账号</username>
            <password>Maven私服密码</password>
        </server>
    </servers>

    <!-- 镜像:拦截所有仓库请求,统一走公司私服 -->
    <mirrors>
        <mirror>
            <id>company-nexus</id>
            <mirrorOf>*</mirrorOf>
            <name>Company Internal Nexus</name>
            <url>Maven私服地址</url>
        </mirror>
    </mirrors>
</settings>
  1. 保存并关闭记事本。
  2. 回到 IDEA 的 Settings 窗口,点击 OK 保存设置。

三、让 IDEA 开始下载后端依赖

  1. 在 IDEA 中,点击 File -> Open ,选择之前克隆下来的后端项目文件夹 D:\work_code\jkkj-java-cloud,点击 OK 打开。
  2. IDEA 打开后,右下角会弹出一个进度条,显示 Downloading... 或者 Syncing...
  3. 请耐心等待 !因为微服务项目非常庞大,第一次下载所有的"零件"(Jar包)可能需要 10 到 30 分钟,取决于网速。

2. 索要中间件连接信息

微服务依赖 MySQL / Redis / Nacos建议不要本地安装这三个软件(极度占用内存、配置繁琐),直接复用公司公共测试环境。

3. 导入数据库脚本(Navicat)

第一步:用 Navicat 连接 MySQL,建立你的专属数据库

根据后端 README 文档的要求,项目启动需要 4 个数据库。我们要去服务器上把它们建好,并导入初始数据。

  1. 打开 Navicat Premium 17,点击左上角的 "连接" -> "MySQL"。

  2. 填写连接信息:

    • 连接名:随便起,比如 jkkj-MySQL
    • 主机:远程MySQL IP
    • 端口:3306
    • 用户名:远程MySQL 账号
    • 密码:远程MySQL 密码
  3. 点击左下角的 "测试连接" ,如果显示 "连接成功",点击 "确定" 保存。

  4. 新建数据库建库规范 :统一字符集 utf8mb4,排序规则 utf8mb4_general_ci。): 使用 Navicat 连接远程测试服 MySQL,按以下规范建立专属数据库:

    1. 建库清单与导入顺序 (以专属后缀 _junjie 为例):
    • 主库 (系统底座) :新建 gr_wms_sys_server_junjie。导入 jnpf dbnull init.sql (纯净底座)
    • 业务库 (WMS 数据) :新建 gr_wms_server_junjie
      • 说明 :低代码平台的业务表是动态生成的,此库只需建空库,无需导入任何 SQL 脚本
    • (可选) 调度库 :新建 gr_wms_xxjob_junjie,导入 jnpf xxljob init.sql
    • (可选) 流程库 :新建 gr_wms_flow_junjie,导入 jnpf flow init.sql

4. Nacos 控制台配置(专属 Namespace + 改 IP)

  1. 打开浏览器 ,访问提供的nacos网址: 公司内网 Nacos 地址
  2. 登录 :账号 nacos账号,密码 nacos密码
  3. 新建命名空间
    • 点击左部菜单栏的 "命名空间"
    • 点击 "新建命名空间"
    • 命名空间 ID :必须填 自定义英文 ID ,便于 bootstrap 引用(如:Junjie-dev)。
    • 命名空间名称:随意填。
    • 点击确定。
  4. 克隆(复制)配置
    • 点击左部菜单的 "配置管理" -> "配置列表"
    • 在页面左上角,点击 test 命名空间(这时候下面会列出 test 里的所有配置)。
    • 选中所有配置,目标命名空间 ,点击下面的 "克隆" 按钮,选择你刚才新建的 命名空间 ID,点击 "开始克隆"(这样,就拥有了一套和 test 一模一样,但完全属于自己的配置文件了!)

5.修改配置文件

以下是你重新克隆后,唯一需要修改的 3 个具体修改点 。除了这 4 处,其他所有配置一律保持原样,绝对不要动

datasource.yaml是核心连接配置,必须指向你的专属隔离环境:

配置项 原值(test 空间) 改为(你的 Junjie-dev 空间)
spring.data.redis.database 4 5(或其他不相同的)
spring.datasource.db-name gr_wms_sys_server 在 Navicat 里建的专属主库名
spring.datasource.dynamic.datasource.gr_wms_server.url jdbc:mysql://原IP:3306/gr_wms_server?... IP、库名都要改,指向你的专属业务数据库

6. 修改本地 bootstrap.yml(连接 Nacos)

因为后端可以只启动JkkjComposeExampleApplication和网关JkkjGatewayApplication。 JkkjCompose把其他的服务都纳进去了

所以,在idea中,修改微服务 Jkkj-Compose-Example 和网关 Jkkj-Gateway 目录下的 bootstrap.ymlbootstrap-dev.yml,替换为测试服真实数据。

yaml 复制代码
spring:
  cloud:
    nacos:
      username: nacos
      password: 'nacos密码'   # ⚠️ 必须加单引号,含 + 等特殊字符
      discovery:
        server-addr: ${spring.cloud.nacos.config.server-addr}
        namespace: ${spring.cloud.nacos.config.namespace}
      config:
        # Nacos 配置中心的服务器地址,在Nacos网址中找到,这样的 . . . : 
        server-addr: 公司内网 Nacos 地址
        # 填写 Nacos 【命名空间】列表里自己的 "命名空间 ID"
        namespace: 'Junjie-dev'
        file-extension: yaml

⚠️ 两大隐蔽坑

  1. 密码特殊字符 :密码含 +@! 等必须用单引号 包裹,否则 YAML 解析错误导致 403 user not found
  2. Namespace 必须填 IDnamespace 绝不能填中文名称,必须填 Nacos 网页端生成的命名空间 ID(本项目为 Junjie-dev)。

7. 调试配置

操作Edit Configurations → 先后选中JkkjComposeExampleApplication、JnpfGatewayApplication,都对其进行后面操作 → 点击修改选项 → 勾选 添加虚拟机选项、缩短命令行 →

1. IDEA 全局配置优化(防命令行过长)

Shorten command line(缩短命令行) 改为 @argfile (Java 9+)

微服务依赖极多,Windows 下直接启动会报 Command line is too long

2. JDK 17 必备 VM 参数(防反射崩溃)

虚拟机选项 输入框,粘贴:

text 复制代码
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.math=ALL-UNNAMED
--add-opens=java.base/sun.net.util=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.security=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/java.time=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/jdk.internal.module=ALL-UNNAMED
--add-opens=java.base/sun.security.util=ALL-UNNAMED

项目底层使用大量旧版反射机制,JDK 9+ 加强了模块化封装,JDK 17 默认禁止反射访问内部 API。

8. Compose 聚合模块启动法

本地只需启动两个模块:

  1. jkkj-gateway(网关,端口 30000)
  2. jkkj-compose-example(大杂烩聚合模块,把核心业务打包到一起)

9. 按顺序启动微服务

一般启动顺序:

  1. 确认基础设施:Nacos / MySQL / Redis 正常运行(Navicat、Nacos 网页可访问)。
  2. 网关jkkj-gateway
  3. 聚合业务jkkj-compose-example(带 @EnableFileStorage)。
    启动成功标志 :控制台输出 Started JkkjComposeExampleApplication in X.XX seconds

阶段四:前端项目启动与联调(Vue3 + Vite)

在前端项目目录下快速唤起命令提示符窗口,以下命令在这里执行

  1. 在本地文件资源管理器中,打开前端项目根目录 jkkj-base-template-vue3
  2. 快速打开终端:在文件夹顶部的地址栏中,清空当前路径,输入 cmd 并按下回车键。 (注:也可直接在 IDEA / VS Code 等 IDE 中打开该项目,并使用内置的 Terminal 终端)
  3. 启动前端服务:在打开的终端中,执行以下命令启动前端开发服务器:

1. 配置公司 npm 私服(解决 404 找不到内部包)

公司内部 UI 组件库(如 jkkj-ui)不在公网,必须配置私服地址。

前提:

  • 已连公司内网或 VPN。
  • 获取到 公司的私有 npm 仓库地址

在前端项目根目录(D:\work_code\jkkj-base-template-vue3)新建一个名为 .npmrc 的文件。 在文件中写入以下内容并保存:

registry=npm私服地址

2. 安装依赖(解决版本冲突)

npm v7+ 对 peerDependencies 版本冲突严格校验,公司旧项目极易触发 ERESOLVE。必须加"忽略冲突"参数:

css 复制代码
npm install --legacy-peer-deps

预期结果

末尾输出 added N packages in Xs/m,无 ERESOLVE 报错,生成 node_modulespackage-lock.json。弃用/引擎警告可无视。
若加 --legacy-peer-deps 后仍报 ERESOLVE,可删除已生成的 package-lock.json 后重试:

css 复制代码
del package-lock.json
npm install --legacy-peer-deps

这是处理"锁文件锁定了冲突版本"的常见兜底手段

3. 放行底层脚本(仅当上一步出现拦截提示时)

若第 2 步未出现该警告,本步直接跳过。

若第 2 步结尾出现类似

perl 复制代码
npm warn allow-scripts 4 packages have install scripts not yet covered by allowScripts:
npm warn allow-scripts   esbuild@0.11.23 (postinstall: node install.js)
npm warn allow-scripts   core-js@3.49.0 (postinstall: node -e "try{require('./postinstall')}catch(e){}")
npm warn allow-scripts   esbuild@0.28.1 (postinstall: node install.js)
npm warn allow-scripts   esbuild@0.25.12 (postinstall: node install.js)

这是npm 的 allow-scripts 机制 在提醒:项目中有 4 个包包含了 安装后脚本(postinstall),但目前还没有被明确批准执行。
涉及的包:esbuild(三个不同版本:0.11.23、0.28.1、0.25.12)、core-js@3.49.0

npm v12 或 pnpm v10+ 默认拦截 install 脚本,需手动放行并补跑,依次执行:

python 复制代码
npm approve-scripts esbuild          # 按包名批准(覆盖该包所有已安装版本)
npm approve-scripts core-js
# 或者一次性批量批准所有待审核脚本:
npm approve-scripts --allow-scripts-pending
# 也可以用 --all 批准全部:
npm approve-scripts --all

npm install --legacy-peer-deps       # 再次执行,补跑被放行的脚本

预期结果

再次安装时不再出现上述警告,正常执行完毕。

4. 配置本地代理(解决跨域与 404)

前端请求后端接口时,若直接请求前端端口会报 404。修改本地文件D:\work_code\jkkj-base-template-vue3\.env.development,将代理指向本地网关 30000 端口

properties 复制代码
# 注意去掉末尾斜杠
VITE_PROXY = [["/dev","http://localhost:30000"], ["/reportDev","http://localhost:30000"]]

⚠️ 修改 .env必须重启前端服务 (在前端操作命令行,Ctrl+C → 重新 npm run dev)才能生效。

5. 启动项目

bash 复制代码
npm run dev
# 或 npm run serve(看 package.json 的 scripts)

打开项目的 "D:\work_code\jkkj-base-template-vue3\package.json",看 scripts 里面有没有 dev 或者 serve

  • 如果看到 "dev": "vite",就执行 npm run dev
  • 如果只有 "serve": "vite",就执行 npm run serve
    (大多数 Vue3 + Vite 项目默认都是 npm run dev

预期结果:

等待时间稍长,只要最后出现 VITE v.x.x ready in xxx msLocal: http://localhost:xxxx/,按住 Ctrl 点击链接即可访问。

相关推荐
ServBay1 小时前
MCP (Model Context Protocol) 深度指南,协议原理、Python 实现与生产级安全实践
后端·ai编程·mcp
道友可好2 小时前
Claude Code 泄露源码里的 89 个秘密
前端·人工智能·后端
用户8356290780512 小时前
使用 Python 保护和取消保护 Excel 工作表和工作簿
后端·python
Java面试题总结3 小时前
CubeSandbox 实战:从零部署到快照/克隆/回滚全体验
后端
Csvn3 小时前
Python 开发技巧:函数式编程与 lambda 进阶
后端
考虑考虑3 小时前
nginx配置ssl
运维·后端·nginx
uhakadotcom3 小时前
Python 中,`None` 不等于 `False`导致的问题
后端·面试·github
SamDeepThinking3 小时前
面向对象真正管理的,不是对象,而是依赖
java·后端·程序员
9i编程3 小时前
5.Nacos 配置中心化改造与短信 Debug 模式动态切换实践
后端·spring cloud