👋 欢迎回到《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:在冲突文件中手动解决(推荐,最直观)

  1. 打开报错的文件(如 xxx.py),你会看到类似这样的标记:
    <<<<<<< HEAD
    print("这是我在master上的代码")
    =======
    print("这是feature分支上的代码")
    >>>>>>> feature-login

  2. 手动编辑:决定保留哪一部分,或者两部分都保留,然后删除 <<<<<<<=======>>>>>>> 这些标记符号。
  3. 保存文件。
  4. 重新添加并提交:
    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条黄金建议

  1. 每天上班第一件事:git pull
    确保你测试的是最新代码,避免因为代码过期而提无效Bug。
  2. Commit Message要写清楚
    不要写 “update”、“fix”,要写 “修复登录页验证码刷新失败问题”。这不仅是给同事看,也是给未来的自己看。
  3. 善用 git status 和 git log
    不知道下一步该干嘛?敲 git status
    想知道谁改了啥?敲 git log --oneline
    这两个命令是你的导航仪!

 课后小作业(评论区见!)

📱 实战演练:
假设你现在有一个项目,需要完成以下任务:

  1. 从远程仓库克隆代码到本地。
  2. 创建一个名为 test-bug-fix 的新分支。
  3. 修改一个文件 app.py
  4. 将修改提交到本地仓库,备注为 “修复首页加载缓慢问题”。
  5. 推送到远程仓库。

请按顺序写出你需要执行的Git命令!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐