跳到主要内容Git 与 GitLab 基础使用教程 | 极客日志编程语言
Git 与 GitLab 基础使用教程
介绍 Git 与 GitLab 的基础使用。涵盖环境搭建、SSH 密钥配置、仓库克隆、分支管理、代码提交与推送、Merge Request 协作流程及常见报错处理。重点强调不要直接修改主分支,需通过功能分支开发并审核合并。适合新手快速上手版本控制工具。
星星泡饭32 浏览 1. 零基础扫盲
在敲任何命令前,先理解 Git 和 GitLab 的底层逻辑。
| 概念 | 通俗解释 | 对应场景 |
| Git | 本地的代码版本管理工具,能记录每一次的代码修改,还能切换不同版本 | 本地电脑改代码、保存修改、回退错误修改 |
| GitLab | 远程的代码仓库服务器,用来存放团队共享的代码,也是协作的平台 | 团队共享代码、协作开发 |
| 核心四区域 | ①工作区:实际写代码的文件夹;②暂存区:临时存放准备提交的修改;③本地仓库:Git 本地保存的所有提交记录;④远程仓库:GitLab 上的仓库 | 日常操作:工作区改代码 → 暂存区 (git add) → 本地仓库 (git commit) → 远程仓库 (git push) |
| 分支 (Branch) | 代码的平行宇宙,主分支是正式版本,新建的功能分支是开发版本 | 避免直接改主分支,防止代码混乱 |
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 验证
2.2 配置个人信息(关联公司 GitLab 账号)
Git 会记录每一次提交的作者,必须和公司 GitLab 的账号一致,否则提交记录会显示未知用户。
2.2.1 打开 Git Bash / 终端,输入以下两条命令(替换成你的信息):
git config --global user.name "你的 GitLab 用户名"
git config --global user.email "你在公司的邮箱"
2.2.2 验证
2.2.3 配置 SSH 密钥(免密访问公司 GitLab)
如果不配这个,每次拉/推代码都要输账号密码,还容易报错。公司内网 GitLab 几乎都要求用 SSH 密钥:
- 生成 SSH 密钥(Git Bash / 终端输入,一路回车,不要改任何默认值):
ssh-keygen -t ed25519 -C "你在公司的邮箱"
- 执行后会提示 Enter file in which to save the key,直接回车(默认保存到 ~/.ssh 文件夹);
- 提示 Enter passphrase(密码),直接回车(免密,后续操作不用输密码);
- 提示 Enter same passphrase again,再回车。
- Windows:在 Git Bash 输入
cat ~/.ssh/id_ed25519.pub,会显示一串以 ssh-ed25519 开头、你的邮箱结尾的字符串,全选复制(按 Ctrl+C,注意不要漏字符);
- 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 上的远程仓库,复制一份到你本地电脑,后续所有开发都在本地克隆的文件夹里做。
- 打开 Git Bash / 终端,先切换到你想存放代码的目录(比如桌面):
cd /c/Users/你的用户名/Desktop
git clone git@gitlab.公司域名.com:测试项目组/测试项目.git
- 预期结果:终端显示 Cloning into '测试项目'...,最后无报错,说明克隆成功;此时你的桌面会多出一个测试项目文件夹(这就是你的本地工作区)。
3.2 分支操作(核心!绝对不要直接改主分支)
公司规范:main/master(主分支)是生产环境代码,dev(开发分支)是团队共用分支,你必须从 dev 分支新建自己的功能分支开发。
输出示例:* main(* 表示当前在 main 分支)、remotes/origin/dev(远程的 dev 分支)。
- 切换到远程 dev 分支,并拉取最新代码(避免你的本地分支落后):
git checkout dev
git pull origin dev
- 新建你的个人功能分支(命名按公司规范,比如 feature/日期 - 功能名):
git checkout -b feature/20251209-新增登录功能
- 验证:执行
git branch,会看到 * feature/20251209-新增登录功能,说明已成功切换到自己的功能分支。
3.3 本地开发 + 提交代码(核心命令)
现在你可以在测试项目文件夹里修改代码(比如新建一个 login.py 文件,写几行测试代码),然后把修改提交到本地仓库:
- 先查看本地代码状态(每次提交前必做,确认修改内容):
预期输出:Untracked files: (use "git add ..." to include in what will be committed) login.py,说明 Git 检测到你新建了 login.py 文件。
-
再次执行 git status,会看到 Changes to be committed: login.py,说明文件已进入暂存区。
-
将暂存区的修改提交到本地仓库(相当于结账,生成一条提交记录):
git commit -m "feat: 新增用户登录接口,实现手机号验证"
预期输出:显示 1 file changed, 3 insertions(+),说明提交成功。
3.4 推送本地分支到 GitLab 远程仓库
目的:把你本地的功能分支和提交记录,上传到 GitLab,让同事能看到,也为了后续提 MR。
- 执行推送命令(第一次推送新分支,需要指定远程仓库和分支名):
git push origin feature/20251209-新增登录功能
预期输出:显示 Total 0 (delta 0), reused 0 (delta 0),最后提示 To gitlab.公司域名.com:测试项目组/测试项目.git * [new branch] feature/20251209-新增登录功能 -> feature/20251209-新增登录功能,说明推送成功。
- 验证:登录公司 GitLab → 进入测试项目 → 点击左侧 Repository→Branches,能看到你刚推送的分支,说明成功。
3.5 提 Merge Request(MR,GitLab 协作核心)
MR 是请求把你的功能分支合并到 dev 分支,需要 leader / 同事审核通过后才能合并,这是公司协作的关键步骤(对应 GitHub 的 PR):
- 登录公司 GitLab → 进入测试项目 → 页面顶部找到 Merge Requests→ 点击 New merge request(新建 MR);
- 选择分支:
- Source branch(源分支):选你刚推送的 feature/20251209-新增登录功能;
- Target branch(目标分支):选 dev(绝对不要选 main/master!);
- 点击 Compare branches and continue(对比分支并继续);
- 填写 MR 信息(按公司规范,越详细越好):
- Title(标题):和提交信息一致,比如 feat: 新增用户登录接口,实现手机号验证;
- Description(描述):写清楚你做了什么、测试了什么、需要注意什么(比如 1. 新增 login.py 实现手机号正则校验;2. 测试了正确 / 错误手机号场景;3. 依赖 requests 库);
- (可选)Assignee(审核人):选择你的 leader 或指定的审核同事;
- 点击 Create merge request(创建 MR),此时 MR 就提交成功了,等待审核
3.6 MR 审核通过后 → 合并 + 清理分支
- 审核通过后,GitLab 页面会显示 Merge 按钮,点击它(一般由审核人点,或你确认后点),选择 Merge commit(合并提交),完成分支合并;
- 合并后,清理本地和远程的功能分支(避免分支过多混乱):
git checkout dev
git pull origin dev
git branch -d feature/20251209-新增登录功能
git push origin --delete feature/20251209-新增登录功能
4. 新手高频问题与解决(避坑指南)
问题 1:git pull/push 报错 Permission denied (publickey)
- 检查 SSH 密钥是否正确添加到 GitLab:重新走配置 SSH 密钥的步骤,确认公钥复制完整(不要多空格 / 少字符);
- 验证 SSH 连接:
ssh -T git@公司域名,如果显示 Welcome 说明没问题,否则重新生成密钥。
问题 2:提 MR 后提示代码冲突
原因:你开发时,同事已经修改了 dev 分支的同一文件,解决步骤:
- 切回你的功能分支,拉取 dev 分支的最新代码并合并:
git checkout feature/20251209-新增登录功能
git pull origin dev
-
打开冲突文件:文件里会有 <<<<<<< HEAD(dev 分支的代码)、=======(你的代码)、>>>>>>> feature/xxx 标记,手动删除标记并保留正确代码;
-
解决后重新提交并推送:
git add 冲突文件名
git commit -m "fix: 解决 dev 分支代码冲突"
git push origin feature/20251209-新增登录功能
- 此时 GitLab 的 MR 会自动更新,冲突标记消失。
问题 3:提交错分支(比如误改了 dev 分支)
git checkout feature/20251209-新增登录功能
git stash pop
git log --oneline
git reset --hard abc123
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 小时,重复克隆→建分支→改代码→提交→推分支→提 MR→合并→删分支全流程,至少做 3 遍,肌肉记忆就形成了;
- 对齐公司规范:主动问 leader 要 3 样东西:① 公司的分支命名规范;② 提交信息规范;③ MR 模板,严格按规范来,避免返工;
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online