Git与GitLab的使用教程

Git与GitLab的使用教程

本文从”零基础扫盲→环境搭建→手把手实操→避坑指南“四个方面讲解。

目录

1. 零基础扫盲

2. 环境搭建

2.1 Git安装

2.1.1 官网下载Git

2.1.2 Git安装流程中的选项配置

2.1.3 验证

2.2 配置个人信息(关联公司GitLab账号)

2.2.1 打开 Git Bash / 终端,输入以下两条命令(替换成你的信息):

2.2.2 验证

2.2.3 配置 SSH 密钥(免密访问公司 GitLab,核心!)

3. 手把手实操

前置准备:找到公司 GitLab 仓库的 SSH 地址

3.1 克隆仓库到本地

3.2 分支操作(核心!绝对不要直接改主分支)

3.3 本地开发 + 提交代码(核心命令)

3.4 推送本地分支到 GitLab 远程仓库

3.5 提 Merge Request(MR,GitLab 协作核心)

3.6 MR 审核通过后 → 合并 + 清理分支

4. 新手高频问题与解决(避坑指南,必看!)

问题 1:git pull/push 报错 “Permission denied (publickey)”

问题 2:提 MR 后提示 “代码冲突”

问题 3:提交错分支(比如误改了 dev 分支)

问题 4:想撤销已暂存的文件(比如 git add 加错了文件)

5. 必背核心命令(新手版,记这些就够了)

6. 新手学习建议(效率最高)


1. 零基础扫盲

在敲任何命令前,先理解 Git 和 GitLab 的底层逻辑,否则只会 “照猫画虎”。

概念通俗解释对应场景
Git本地的 “代码版本管理工具”(软件),能记录你每一次的代码修改,还能切换不同版本你在本地电脑改代码、保存修改、回退错误修改,都靠 Git 完成
GitLab远程的 “代码仓库服务器”(网站 / 私有服务器),用来存放团队共享的代码,也是协作的平台你在本地电脑改代码、保存修改、回退错误修改,都靠 Git 完成
核心四区域(关键)① 工作区:你实际写代码的文件夹(比如桌面的 “项目文件夹”);② 暂存区:临时存放 “准备提交的修改”(相当于 “购物车”);③ 本地仓库:Git 本地保存的所有提交记录(相当于 “你的个人账本”);④ 远程仓库:GitLab 上的仓库(相当于 “团队共享账本”)日常操作就是:工作区改代码 → 暂存区(git add)→ 本地仓库(git commit)→ 远程仓库(git push)
分支(Branch)代码的 “平行宇宙”,比如主分支(main/master)是 “正式版本”,你新建的 feature 分支是 “你的开发版本”,改坏了也不影响主分支公司规定 “不能直接改主分支”,必须在自己的分支开发,就是为了避免代码混乱

2. 环境搭建

以Win10为例

2.1 Git安装

2.1.1 官网下载Git

从官网https://git-scm.com/下载对应版本的Git

2.1.2 Git安装流程中的选项配置

其余使用默认选项即可。

注意:建议最后一步勾选 “Launch Git Bash”,打开 Git 命令行(后续所有命令在 Git Bash 里敲)。

2.1.3 验证

输入以下命令,验证Git安装是否成功

git --version

2.2 配置个人信息(关联公司GitLab账号)

Git 会记录每一次提交的作者,必须和你公司 GitLab 的账号一致,否则提交记录会显示 “未知用户”。

2.2.1 打开 Git Bash / 终端,输入以下两条命令(替换成你的信息):

git config --global user.name "你的GitLab用户名" git config --global user.email "你在公司的邮箱"

2.2.2 验证

验证配置是否成功

git config --list

2.2.3 配置 SSH 密钥(免密访问公司 GitLab,核心!)

如果不配这个,每次拉 / 推代码都要输账号密码,还容易报错。公司内网 GitLab 几乎都要求用 SSH 密钥

1. 生成 SSH 密钥(Git Bash / 终端输入,一路回车,不要改任何默认值):

ssh-keygen -t ed25519 -C "你在公司的邮箱"

  • 执行后会提示 “Enter file in which to save the key”,直接回车(默认保存到 ~/.ssh 文件夹);
  • 提示 “Enter passphrase”(密码),直接回车(免密,后续操作不用输密码);
  • 提示 “Enter same passphrase again”,再回车。

2. 找到并复制公钥

  • Windows:在 Git Bash 输入 cat ~/.ssh/id_ed25519.pub,会显示一串以 ssh-ed25519开头、你的邮箱结尾的字符串,全选复制(按 Ctrl+C,注意不要漏字符);

3. 把公钥添加到公司 GitLab:

        a. 登录公司 GitLab 网页(比如 http://gitlab.公司域名.com);

        b. 点击页面右上角的 “个人头像” → 选择 “Settings”(设置);

        c. 左侧菜单栏找到 “SSH Keys”(SSH 密钥);

        d. 粘贴刚才复制的公钥到 “Key” 输入框,“Title” 可以填 “我的办公电脑”(随便填,方便识别);

        e. 点击 “Add key”(添加密钥),验证:Git Bash / 终端输入ssh -T git@公司域名(替换成你公司的 GitLab 域名),如果显示 Welcome to GitLab, @你的用户名!,说明 SSH 配置成功!

3. 手把手实操

假设公司 GitLab 有一个测试项目(如果没有,让 leader 给你开一个测试仓库,或自己新建一个),我们完整走一遍 “开发→提交→提 MR→合并” 的流程,每一步都写死命令和操作:

前置准备:找到公司 GitLab 仓库的 SSH 地址

登录公司 GitLab → 进入目标项目 → 点击页面上方的 “Clone”(克隆)按钮 → 选择 “SSH” 标签 → 复制显示的地址(比如 git@gitlab.公司域名.com:测试项目组/测试项目.git)。

3.1 克隆仓库到本地

目的:把 GitLab 上的远程仓库,复制一份到你本地电脑,后续所有开发都在本地克隆的文件夹里做。

1. 打开 Git Bash / 终端,先切换到你想存放代码的目录(比如桌面):

cd /c/Users/你的用户名/Desktop

2. 执行克隆命令(粘贴刚才复制的 SSH 地址):

git clone git@gitlab.公司域名.com:测试项目组/测试项目.git

3. 预期结果:终端显示 “Cloning into ' 测试项目 '...”,最后无报错,说明克隆成功;此时你的桌面会多出一个 “测试项目” 文件夹(这就是你的本地工作区)。

3.2 分支操作(核心!绝对不要直接改主分支)

公司规范:main/master(主分支)是生产环境代码,dev(开发分支)是团队共用分支,你必须从 dev 分支新建自己的功能分支开发。

1. 先进入克隆好的项目文件夹:

cd 测试项目 # 进入项目根目录,后续所有命令都要在这个目录下执行!

2. 查看当前所有分支(本地 + 远程):

git branch -a # -a 表示 all,查看所有分支

输出示例:* main(* 表示当前在 main 分支)、remotes/origin/dev(远程的 dev 分支)。

3. 切换到远程 dev 分支,并拉取最新代码(避免你的本地分支落后):

# 切换到 dev 分支(如果本地没有,会自动创建并关联远程 dev) git checkout dev # 拉取远程 dev 分支的最新代码(同步同事的修改) git pull origin dev

4. 新建你的个人功能分支(命名按公司规范,比如 feature/日期-功能名):

# -b 表示“新建并切换到该分支”,示例:feature/20251209-新增登录功能 git checkout -b feature/20251209-新增登录功能

5. 验证:执行 git branch,会看到 * feature/20251209-新增登录功能,说明已成功切换到自己的功能分支。

3.3 本地开发 + 提交代码(核心命令)

现在你可以在 “测试项目” 文件夹里修改代码(比如新建一个 login.py 文件,写几行测试代码),然后把修改提交到本地仓库:

1. 先查看本地代码状态(每次提交前必做,确认修改内容):

git status

预期输出:Untracked files: (use "git add <file>..." to include in what will be committed) login.py,说明 Git 检测到你新建了 login.py 文件。

2. 将修改加入 “暂存区”(相当于把商品加入购物车):

# 方式 1:添加指定文件(推荐,避免误加无关文件) git add login.py # 方式 2:添加所有修改(适合一次性改了多个文件) # git add .

3. 再次执行git status,会看到 Changes to be committed: login.py,说明文件已进入暂存区。

4. 将暂存区的修改提交到 “本地仓库”(相当于结账,生成一条提交记录):

# -m 后面是提交信息,必须按公司规范写!格式:类型: 功能描述 # 常见类型:feat(新增功能)、fix(修复bug)、docs(修改文档)、style(格式调整) git commit -m "feat: 新增用户登录接口,实现手机号验证"

预期输出:显示 1 file changed, 3 insertions(+),说明提交成功。

3.4 推送本地分支到 GitLab 远程仓库

目的:把你本地的功能分支和提交记录,上传到 GitLab,让同事能看到,也为了后续提 MR。

1. 执行推送命令(第一次推送新分支,需要指定远程仓库和分支名):

# origin 是远程仓库的默认名称,后面跟你的功能分支名 git push origin feature/20251209-新增登录功能

预期输出:显示 Total 0 (delta 0), reused 0 (delta 0),最后提示 To gitlab.公司域名.com:测试项目组/测试项目.git * [new branch] feature/20251209-新增登录功能 -> feature/20251209-新增登录功能,说明推送成功。

2. 验证:登录公司 GitLab → 进入测试项目 → 点击左侧 “Repository”→“Branches”,能看到你刚推送的分支,说明成功。

3.5 提 Merge Request(MR,GitLab 协作核心)

MR 是 “请求把你的功能分支合并到 dev 分支”,需要 leader / 同事审核通过后才能合并,这是公司协作的关键步骤(对应 GitHub 的 PR):

1. 登录公司 GitLab → 进入测试项目 → 页面顶部找到 “Merge Requests”→ 点击 “New merge request”(新建 MR);

2. 选择分支:

  • “Source branch”(源分支):选你刚推送的 feature/20251209-新增登录功能
  • “Target branch”(目标分支):选 dev(绝对不要选 main/master!);
  • 点击 “Compare branches and continue”(对比分支并继续);

3. 填写 MR 信息(按公司规范,越详细越好):

  • “Title”(标题):和提交信息一致,比如 “feat: 新增用户登录接口,实现手机号验证”;
  • “Description”(描述):写清楚你做了什么、测试了什么、需要注意什么(比如 “1. 新增 login.py 实现手机号正则校验;2. 测试了正确 / 错误手机号场景;3. 依赖 requests 库”);
  • (可选)“Assignee”(审核人):选择你的 leader 或指定的审核同事;
  • 点击 “Create merge request”(创建 MR),此时 MR 就提交成功了,等待审核

3.6 MR 审核通过后 → 合并 + 清理分支

  1. 审核通过后,GitLab 页面会显示 “Merge” 按钮,点击它(一般由审核人点,或你确认后点),选择 “Merge commit”(合并提交),完成分支合并;
  2. 合并后,清理本地和远程的功能分支(避免分支过多混乱):
# 第一步:切回 dev 分支,拉取合并后的最新代码 git checkout dev git pull origin dev # 第二步:删除本地的功能分支(-d 表示删除已合并的分支) git branch -d feature/20251209-新增登录功能 # 第三步:删除远程的功能分支(可选,公司一般要求合并后删除) git push origin --delete feature/20251209-新增登录功能

4. 新手高频问题与解决(避坑指南,必看!)

问题 1:git pull/push 报错 “Permission denied (publickey)”

原因:SSH 密钥配置错误,解决步骤:

  1. 检查 SSH 密钥是否正确添加到 GitLab:重新走 “配置 SSH 密钥” 的步骤,确认公钥复制完整(不要多空格 / 少字符);
  2. 验证 SSH 连接:ssh -T git@公司域名,如果显示 “Welcome” 说明没问题,否则重新生成密钥。

问题 2:提 MR 后提示 “代码冲突”

原因:你开发时,同事已经修改了 dev 分支的同一文件,解决步骤:

1. 切回你的功能分支,拉取 dev 分支的最新代码并合并:

git checkout feature/20251209-新增登录功能 git pull origin dev # 拉取 dev 最新代码,此时会提示“Automatic merge failed; fix conflicts and then commit the result.”

2. 打开冲突文件:文件里会有<<<<<<< HEAD(dev 分支的代码)、=======(你的代码)、>>>>>>> feature/xxx 标记,手动删除标记并保留正确代码;

3. 解决后重新提交并推送:

git add 冲突文件名 git commit -m "fix: 解决dev分支代码冲突" git push origin feature/20251209-新增登录功能

4. 此时 GitLab 的 MR 会自动更新,冲突标记消失。

问题 3:提交错分支(比如误改了 dev 分支)

解决步骤:

1. 先暂存你的修改(避免丢失):

git stash # 把当前修改暂存起来,工作区恢复到干净状态

2. 切到正确的功能分支,恢复暂存的修改:

git checkout feature/20251209-新增登录功能 git stash pop # 恢复暂存的修改到当前分支

3. 如果已经误提交到 dev 分支,需要回滚:

# 先查看提交记录,找到错误提交前的ID(比如 abc123) git log --oneline # 回滚到错误提交前的版本(--hard 表示彻底回滚,慎用!) git reset --hard abc123 # 推送到远程 dev 分支(需要权限,一般找 leader 确认) git push origin dev --force

问题 4:想撤销已暂存的文件(比如 git add 加错了文件)

# 撤销指定文件的暂存 git reset HEAD 错误文件名 # 撤销所有暂存的文件 git reset HEAD .

5. 必背核心命令(新手版,记这些就够了)

命令作用新手使用场景
git clone 地址克隆远程仓库到本地第一次获取项目代码
git checkout 分支名切换分支切到 dev 分支 / 自己的功能分支
git checkout -b 新分支新建并切换分支从 dev 分支新建自己的功能分支
git pull origin 分支名拉取远程分支最新代码开发前同步同事的修改
git status查看本地代码状态每次提交前确认修改内容
git add 文件名/.暂存修改的文件准备提交前把修改加入暂存区
git commit -m "描述"提交暂存区到本地仓库完成一段开发后保存修改
git push origin 分支名推送本地分支到远程把自己的代码上传到 GitLab 提 MR
git branch查看本地分支确认当前在哪个分支
git branch -d 分支名删除本地分支合并后清理无用分支

6. 新手学习建议(效率最高)

  1. 实操优先:不要只看教程,找公司的测试仓库(或自己新建一个空仓库),每天花 1 小时,重复 “克隆→建分支→改代码→提交→推分支→提 MR→合并→删分支” 全流程,至少做 3 遍,肌肉记忆就形成了;
  2. 对齐公司规范:主动问 leader 要 3 样东西:① 公司的分支命名规范;② 提交信息规范;③ MR 模板,严格按规范来,避免返工;

Read more

基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战

基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战

目录 前言 一、需求介绍 1、指定宽度生成 2、指定列自适应生成 二、Java生成实现 1、公共方法 2、指定宽度生成 3、指定列自适应生成 三、总结 前言         在当今数字化与信息化飞速发展的时代,图像的生成与处理技术正日益成为众多领域关注的焦点。从创意设计到数据可视化,从游戏开发到人工智能辅助创作,高效、精准且具有高度适应性的图像生成方案有着广泛而迫切的需求。Java 作为一种强大、稳定且广泛应用的编程语言,在图像绘制领域也发挥着不可忽视的作用。         在GIS领域,比如图例的生成就会面对以上的问题。由于在进行字符标注时无法预测文本的长度,因此我们需要能有一种自适应文本长度的生成方法,但是同时,也有可能我们需要指定一种宽度从而对字符文本进行绘制的需要。如下两图所示: 自适应宽度生成示意图 指定宽度生成示意图          本实战旨在深入探讨基于 Java 的不固定长度字符集在指定宽度和自适应模型下图片绘制生成的方法与技巧。不固定长度字符集为图片绘制带来了独特的挑战与机遇。一方面,其灵活多变的字符组合方式能够创造出丰富多

By Ne0inhk
IDEA安装教程配置java环境(超详细)_idea配置java,零基础入门到精通,收藏这篇就够了

IDEA安装教程配置java环境(超详细)_idea配置java,零基础入门到精通,收藏这篇就够了

引言 IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),广泛用于 Java 开发,但也支持多种编程语言,如 Kotlin、Groovy 和 Scala。本文将为你提供一步一步的指南,帮助你在 Windows 系统上顺利安装 IntelliJ IDEA。 一、安装 JDK 1.1下载JDK 1.访问 JDK 下载页面 打开浏览器,访问Oracle JDK 下载页面. Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java22 2.选择版本 选择适合你的 JDK 版本(例如 JDK17或JDK21

By Ne0inhk
从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发

从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发

🔥个人主页:@草莓熊Lotso 🎬作者简介:C++研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受。 前言:当大模型浪潮席卷软件开发领域时,Java 开发者常常面临一个困境:一边是 PyTorch、LangChain 等 Python 生态的 AI 工具链蓬勃发展,一边是企业现有系统中大量的 Spring 技术栈难以快速接入 AI 能力。而 Spring AI 的出现,恰好打破了这层壁垒 —— 它将 Spring 生态的 “约定优于配置”、依赖注入、声明式编程等核心思想,与大模型交互、向量数据库集成、AI 工作流编排等能力深度融合,让 Java 开发者能以熟悉的方式拥抱 AI。今天,

By Ne0inhk
飞算JavaAI炫技赛:电商系统商品管理模块设计与实现

飞算JavaAI炫技赛:电商系统商品管理模块设计与实现

飞算JavaAI炫技赛:电商系统商品管理模块设计与实现 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶。 🔬 每一次代码审查都是我的显微镜观察,每一次重构都是我的化学实验。 🎵 在编程的交响乐中,我既是指挥家也是演奏者。让我们一起,在技术的音乐厅里,奏响属于程序员的华美乐章。 目录 飞算JavaAI炫技赛:电商系统商品管理模块设计与实现 需求分析与规划 一、功能需求 二、核心模块 三、技术选型 飞算JavaAI开发实录 准备AI开发提示词 需求理解阶段 接口设计阶段 表结构设计阶段 逻辑处理阶段 源码生成阶段 优化与调试心得 pom依赖 Mysql配置 redis配置 Elasticsearch配置 YAML配置文件 成果展示与总结 API接口列表 核心代码 开发总结 引用箴言 参考链接 关键词标签 需求分析与规划 一、功能需求 功能需求总览流程图 商品基本信息管理:

By Ne0inhk