0基础学测试:入门第八课(技术篇)| Git版本控制:从安装配置到冲突解决,一篇搞定所有核心命令
👋 欢迎回到《0基础开展软件测试》系列。
上一章我们了解了Git的概念和主流工具。今天,我们要进入实战环节!
很多新人看到命令行就头大,其实Git的核心命令就那么几十个。只要掌握了20%的高频命令,就能应对80%的日常工作。
本章将严格按照学习路径,带你从零开始:安装配置 -> 理解术语 -> 掌握命令 -> 解决冲突 -> 版本回溯。
准备好打开你的终端(Terminal/CMD)了吗?让我们开始吧!
一、什么是Git?再认识一遍
定义:
Git是一个开源的分布式版本控制系统。
核心价值:
- 时光机:随时回退到任何历史版本。
- 协作器:多人并行开发,智能合并代码。
- 保险箱:每个本地都是完整备份,服务器挂了也不怕。
测试人员为什么必须会?
- 拉取最新测试代码
- 查看谁在什么时候改了哪行代码(定位Bug)
- 管理自动化测试脚本
- 配合CI/CD流水线
二、安装与配置:工欲善其事
下载安装
- 官网:https://git-scm.com/
- Windows用户:下载 .exe 安装包,一路Next。
- 建议勾选:Add Git to PATH(方便在任何目录使用命令)
- 建议勾选:Use Git from Git Bash only(避免与其他命令冲突)
- Mac用户:终端输入 git --version,系统会自动提示安装Xcode Command Line Tools。
- Linux用户:sudo apt-get install git (Ubuntu) 或 sudo yum install git (CentOS)
初次配置(必做!)
安装完成后,首先要告诉Git你是谁。这些信息会绑定到你提交的每一次记录中。
# 配置全局用户名(用你的真实姓名或英文名)
git config --global user.name "Your Name"
# 配置全局邮箱(务必使用你GitHub/GitLab注册的邮箱)
git config --global user.email "your.email@example.com"
# 验证配置是否成功
git config --list
💡 提示:--global 表示全局配置,只需配置一次。如果不加,则只对当前仓库生效。
三、Git核心术语:听懂行话才能不懵圈
在敲命令之前,必须先理解这几个核心概念。这是理解Git工作流的基础!
| 术语 | 英文 | 解释 | 比喻 |
|---|---|---|---|
| 工作区 | Working Directory | 你电脑上能看到的项目文件夹,你在这里编辑代码。 | 你的书桌,你在上面写字。 |
| 暂存区 | Staging Area / Index | 执行 git add 后,文件暂时存放的地方,准备提交。 |
快递打包台,把要寄的东西先放这里。 |
| 本地仓库 | Local Repository | 执行 git commit 后,文件正式保存到你的本地Git库。 |
你家中的储物间,东西已经收好了。 |
| 远程仓库 | Remote Repository | GitHub/GitLab上的仓库,团队共享的代码库。 | 公司的中央档案室,大家都能访问。 |
| 分支 | Branch | 基于主线路创建的一条独立开发线,互不影响。 | 平行宇宙,在这个宇宙里随便改,不影响主宇宙。 |
| 提交 | Commit | 一次版本的快照,包含作者、时间、修改内容和备注信息。 | 游戏存档点,随时可以读档回来。 |
| 推送 | Push | 把本地仓库的提交上传到远程仓库。 | 把家里的存档同步到云端服务器。 |
| 拉取 | Pull | 从远程仓库下载最新的提交到本地。 | 从云端服务器下载别人的最新存档。 |
标准工作流:工作区 --(git add) --> 暂存区 --(git commit)--> 本地仓库 --(git push) --> 远程仓库
四、Git相关操作命令:手把手教学
1. 配置命令 git config
# 查看所有配置
git config --list
# 查看特定配置项
git config user.name
git config user.email
# 修改配置(比如换了邮箱)
git config --global user.email "new.email@example.com"
# 设置默认编辑器(可选,推荐VSCode或Vim)
git config --global core.editor "code --wait"
2. 仓库操作
# 初始化一个新仓库(在当前目录创建.git文件夹)
git init
# 克隆远程仓库到本地(最常用!)
git clone <仓库URL>
# 例如:git clone https://github.com/username/project.git
# 查看远程仓库信息
git remote -v
# 添加远程仓库(通常clone后自动添加,名为origin)
git remote add origin <仓库URL>
# 移除远程仓库
git remote remove origin
3. 文件状态与提交
# 查看当前仓库状态(超有用!不知道下一步该干嘛时就敲它)
git status
# 添加文件到暂存区
git add <文件名> # 添加指定文件
git add . # 添加当前目录下所有改动(最常用)
git add *.py # 添加所有.py文件
# 提交到本地仓库(必须写备注!)
git commit -m "修复登录页面按钮颜色错误"
# 查看提交历史日志
git log # 显示详细日志
git log --oneline # 简洁模式,一行一条
git log -n 5 # 只看最近5条
注意:commit 只是保存到本地,别人还看不到!必须 push 才上传。
4. 远程仓库交互
# 拉取远程最新代码并合并到当前分支(测前必做!)
git pull
# 推送本地提交到远程仓库
git push origin master # 推送到master分支
git push origin main # 推送到main分支(现在很多项目默认用main)
git push -u origin master # 第一次推送时加上-u,建立关联
# 只拉取不合并(安全起见,先看再合)
git fetch origin
5. 分支操作(重中之重!)
# 查看所有分支(*号表示当前所在分支)
git branch
# 创建新分支(但不切换)
git branch <分支名>
# 例如:git branch feature-login
# 切换分支
git checkout <分支名>
# 例如:git checkout feature-login
# 创建并切换到新分支(组合拳,最常用)
git checkout -b <分支名>
# 例如:git checkout -b fix-bug-001
# 删除本地分支(先切回其他分支再删)
git branch -d <分支名>
# 删除远程分支
git push origin --delete <分支名>
# 查看分支合并情况
git branch --merged # 已合并的分支
git branch --no-merged # 未合并的分支
最佳实践:永远不要在 master/main 主分支上直接开发!每次新功能或Bug修复都新建一个分支。
6. 合并与冲突(高频痛点!)
当你和同事修改了同一个文件的同一行代码,Git无法自动合并时,就会产生冲突(Conflict)。
步骤1:尝试合并
<<<<<<< HEAD
print("这是我在master上的代码")
=======
print("这是feature分支上的代码")
>>>>>>> feature-login
如果出现 CONFLICT (content): Merge conflict in xxx.py,说明有冲突。
步骤2:解决冲突(两种方法)
方法A:在冲突文件中手动解决(推荐,最直观)
- 打开报错的文件(如
xxx.py),你会看到类似这样的标记:<<<<<<< HEAD print("这是我在master上的代码") ======= print("这是feature分支上的代码") >>>>>>> feature-login - 手动编辑:决定保留哪一部分,或者两部分都保留,然后删除
<<<<<<<,=======,>>>>>>>这些标记符号。 - 保存文件。
- 重新添加并提交:
git add xxx.py git commit -m "解决合并冲突"
方法B:在命令编辑器中解决(高级玩家)
如果你配置了图形化合并工具(如 VSCode, KDiff3, Meld),可以直接调用:
git mergetool
会弹出可视化界面让你选择保留左边、右边还是两边。
预防冲突小贴士:
多 pull 远程代码,保持本地最新。
小步提交,不要憋大招。
沟通!和同事说清楚你要改哪个文件。
7. 版本回溯(后悔药)
不小心提交了错误代码?别慌,Git让你时光倒流!
# 撤销工作区的修改(还没add)
git checkout -- <文件名>
# 例如:git checkout -- app.py (恢复到上次commit的状态)
# 撤销暂存区的修改(已经add,还没commit)
git reset HEAD <文件名>
# 例如:git reset HEAD app.py
# 撤销最近的commit(已经commit,还没push)
git reset --soft HEAD^ # 保留修改,退回暂存区
git reset --hard HEAD^ # 彻底丢弃修改(危险!慎用!)
# 回退到某个特定的历史版本
git reset --hard <commit-id>
# 例如:git reset --hard a1b2c3d
# 查看操作历史(包括reset等操作)
git reflog
8. 其他常用命令
# 忽略文件(创建 .gitignore 文件)
echo "*.log" >> .gitignore
echo "__pycache__/" >> .gitignore
echo ".env" >> .gitignore
# 查看代码差异
git diff # 工作区 vs 暂存区
git diff --cached # 暂存区 vs 本地仓库
git diff HEAD~1 # 当前版本 vs 上一个版本
# 标签管理(打版本号)
git tag v1.0.0 # 创建标签
git tag # 查看所有标签
git push origin v1.0.0 # 推送标签到远程
# 清理无用文件(谨慎使用)
git clean -fd # 删除未跟踪的文件和目录
五、给测试新手的3条黄金建议
- 每天上班第一件事:
git pull
确保你测试的是最新代码,避免因为代码过期而提无效Bug。 - Commit Message要写清楚
不要写 “update”、“fix”,要写 “修复登录页验证码刷新失败问题”。这不仅是给同事看,也是给未来的自己看。 - 善用
git status和git log
不知道下一步该干嘛?敲git status。
想知道谁改了啥?敲git log --oneline。
这两个命令是你的导航仪!
课后小作业(评论区见!)
📱 实战演练:
假设你现在有一个项目,需要完成以下任务:
- 从远程仓库克隆代码到本地。
- 创建一个名为
test-bug-fix的新分支。 - 修改一个文件
app.py。 - 将修改提交到本地仓库,备注为 “修复首页加载缓慢问题”。
- 推送到远程仓库。
请按顺序写出你需要执行的Git命令!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)