当前位置: 首页 > news >正文

CI/CD(二)—— Git 基础操作全攻略:从入门到实战 - 指南

文章目录

  • 前言
  • 一、Git 概述
    • 1.1 Git 是什么
    • 1.2 Git 和 SVN 的区别
      • 1.2.1 核心差异要点
      • 1.2.2 适用场景对比表
    • 1.3 用“记账本”理解 Git 与 SVN(生活化比喻)
  • 二、环境安装与配置
    • 2.1 安装 Git
    • 2.2 配置用户信息(全局)
    • 2.3 查看配置与配置文件位置
  • 三、Git 的三大区域
  • 四、初始化与常用操作(从 0 到 1)
    • 4.1 创建/初始化仓库
    • 4.2 查看状态(工作区/暂存区概况)
    • 4.3 添加到暂存区(只有暂存区有内容才可提交)
    • 4.4 撤销暂存(从暂存区移出)
    • 4.5 commit提交到版本库
    • 4.6 查看当前版本库跟踪的文件
    • 4.7 同时从暂存区与工作区删除文件
    • 4.8 commit提交到版本库,彻底删除
    • 4.9 查看提交历史
    • 4.10 在历史之间切换与回到主分支
    • 4.11 从暂存区恢复被删文件(恢复工作区)
      • 4.11.1 `git checkout -- *` 与 `git checkout -- .` 的范围差异
  • 五、标签(Tag)管理
  • 六、分支(Branch)管理
    • 6.1 查看与创建分支
    • 6.2 切换分支并提交改动
    • 6.3 回到主分支并合并
    • 6.4 删除分支
    • 6.5 使用 .gitignore 忽略无需纳入版本库的文件
  • 总结

前言

本文围绕为何选择 Git、如何安装配置、核心区块如何运作、常用命令如何落地四个问题展开,配合完整命令与输出示例,辅以表格对比与生活化比喻,帮助你快速从 0 到 1 掌握 Git 的基础使用。

文章最后还包含分支与标签(tag)管理、忽略规则(.gitignore)等实用内容,便于直接用于日常开发。

适用人群:刚接触版本控制的同学、需要从 SVN 迁移或系统梳理 Git 常用命令的开发者
运行环境:Linux Shell(文中示例基于 CentOS/RHEL 系)


一、Git 概述

1.1 Git 是什么

  • Git 是一个开源的分布式版本控制系统(Distributed Version Control System, DVCS),最初由 Linus Torvalds 为管理 Linux 内核而开发。
  • 相比 CVS、SVN 等集中式工具,Git 采用分布式版本库:每位开发者本地就有完整历史,绝大多数操作在本地完成,离线也能提交、查看历史、切换分支等。

1.2 Git 和 SVN 的区别

1.2.1 核心差异要点

  • 分布式 vs. 集中式
    Git 分布式、可离线提交;SVN 集中式、强依赖中央服务器。
  • 性能与存储
    Git 本地操作快、差异与压缩存储效率高;SVN 网络交互频繁。
  • 分支管理
    Git 分支轻量、创建合并高效;SVN 分支为目录拷贝,较“笨重”。
  • 工作方式
    Git 的提交(commit)与推送(push)分离;SVN 提交即上服务器。
  • 学习曲线
    Git 强大但概念多;SVN 简单直观。
  • 平台支持
    Git 非常适合大规模开发和复杂的代码协作;SVN 与一些老旧的企业工具集成较好。

1.2.2 适用场景对比表

特性GitSVN
开发团队规模适合大规模分布式团队、开源项目适合小团队或集中管理
网络依赖本地操作为主,离线可用高度依赖网络与中央库
分支操作轻量、快速、合并友好目录复制,较重、容易冲突
学习成本略高,功能强大低,上手快
项目类型大型复杂项目小型简单项目
容灾能力高:本地保留完整历史低:依赖服务器备份

1.3 用“记账本”理解 Git 与 SVN(生活化比喻)

  • Git:每人一本账本(分布式)
    你可以随时在本子上记账、查历史,不用找“班长”;需要对账时再把各自账本汇总到“总账本”。
  • SVN:只有一本公共账本(集中式)
    必须找“班长”登记;班长不在就记不了账

小结:Git 灵活高效,适合现代协作;SVN 简单直接,适合集中式管理的轻量场景。


二、环境安装与配置

2.1 安装 Git

# 安装与版本查看
yum -y install git
git --version

2.2 配置用户信息(全局)

# 配置全局用户名与邮箱(影响当前用户的所有仓库)
git config --global user.name "yjs"
git config --global user.email "yjs@yjs.com"
# 设置默认编辑器
git config --global core.editor vim

2.3 查看配置与配置文件位置

# 查看所有配置
git config --list
# 全局配置写入 ~/.gitconfig
# 如果使用 --global 选项,那么配置的用户信息会保存在当前用户家目录下的 .gitconfig 文件里, 以后所有的项目都会默认使用此用户信息。
cat ~/.gitconfig
# 若在某个仓库内去掉 --global,则写入该仓库 .git/config

在这里插入图片描述
在这里插入图片描述


三、Git 的三大区域

  • 工作区(Working Directory):你能看见与编辑的目录与文件。
  • 暂存区(Staging Area/Index)待提交清单,决定本次提交包括哪些变更(一般存放在 .git 目录下的 index 文件(.git/index)中)。
  • 版本库(Repository/.git)历史档案柜,存储所有提交历史与对象。

记忆法:桌面(工作区) → 待提交清单(暂存区) → 文件柜(版本库)


四、初始化与常用操作(从 0 到 1)

4.1 创建/初始化仓库

# 方法一:在新目录创建空仓库
cd /opt
git init mypro
# 输出:初始化空的 Git 版本库于 /opt/mypro/.git/
ls -A /opt/mypro/
# .git

在这里插入图片描述

# 方法二:对已有目录初始化
mkdir /root/myweb
cd /root/myweb
echo '<h1>this is my web</h1>' > index.html
git init
ls -A
# .git  index.html

在这里插入图片描述

4.2 查看状态(工作区/暂存区概况)

git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)##	index.html提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)git status -s   # 简洁模式# ?? index.html 表示未跟踪(Untracked)

状态缩写:
1、?? 未跟踪(Untracked)
2、A 已新增到暂存区(Added)
3、M 被修改(Modified)
4、D 被删除(Deleted)

在这里插入图片描述

4.3 添加到暂存区(只有暂存区有内容才可提交)

git add .
git status -s
# A  index.html
git status     # 详细状态

在这里插入图片描述

4.4 撤销暂存(从暂存区移出)

git rm --cached index.html
git status -s
# ?? index.html
# 然后可重新选择添加:git add index.html 或 git add .

在这里插入图片描述

4.5 commit提交到版本库

git add index.html
git commit -m "init"
git status
# 无文件要提交,干净的工作区

在这里插入图片描述

4.6 查看当前版本库跟踪的文件

git ls-files
# index.html

在这里插入图片描述

4.7 同时从暂存区与工作区删除文件

git rm index.html
ls
# index.html 已不存在
git status
# 要提交的变更:删除:index.html

在这里插入图片描述

4.8 commit提交到版本库,彻底删除

git commit -m "rm index.html"
git status
# 无文件要提交,干净的工作区

在这里插入图片描述

4.9 查看提交历史

git log
# commit cd5be4bdc6b438544e3d311af271723d2720c268
# commit ... rm index.html
# commit 4452f6400985db71de32fe6a3506f860a7042c46
# commit ... init

在这里插入图片描述

4.10 在历史之间切换与回到主分支

# 切换到指定提交快照(演示哈希示例)
git checkout 4452f6400985db71de32fe6a3506f860a7042c46
ls
# index.html 回来了(来自历史快照)

在这里插入图片描述

# 回到最新 master
git checkout master
ls
# index.html 不在(回到当前主分支状态)

在这里插入图片描述

提示:在回到历史提交后的**游离 HEAD(detached HEAD)**状态下,不建议直接修改并提交,以免日后合并混乱。

4.11 从暂存区恢复被删文件(恢复工作区)

# 准备数据
cp /etc/passwd /etc/shadow /etc/hosts ./
ls
hosts  passwd  shadow
git add .
git status -s
# A  hosts
# A  passwd
# A  shadow

在这里插入图片描述

# 误删
rm -rf *
git status -s
# AD hosts
# AD passwd
# AD shadow
git status

在这里插入图片描述

# 用 checkout 丢弃工作区的改动以恢复文件
git checkout -- .
ls
# hosts  passwd  shadow

在这里插入图片描述

4.11.1 git checkout -- *git checkout -- . 的范围差异

命令作用范围是否包含子目录
git checkout -- *当前目录下所有文件
git checkout -- .当前目录及所有子目录

注意:该操作会直接丢弃未保存的本地改动。若文件未加入暂存区,会恢复到“最近一次提交”的内容;若已加入暂存区,会恢复到“暂存区”的内容。


五、标签(Tag)管理

cd /opt/mypro
echo '<h1>this is my web</h1>' > index.html
git add .
git commit -m "init"

在这里插入图片描述

# 给当前提交打标签 1.0
git tag 1.0
# 查看所有的tag
git tag
# 1.0

在这里插入图片描述

# 继续修改并提交
echo '<h2>hello world</h2>' >> index.html
git status -s
#  M index.html
git add .
git commit -m "modify index"
# 再打标签 2.0
git tag 2.0
git tag
# 1.0
# 2.0

在这里插入图片描述

用途:为重要版本(如发布版本)加里程碑标记,便于回溯与发布。


六、分支(Branch)管理

git 中默认有一个名为 master 的主分支,还可以创建自定义的分支。

6.1 查看与创建分支

git branch         # 查看分支
# * master
# 创建分支 b1(创建前确保工作区干净)
git status
git branch b1
git branch
#   b1
# * master

在这里插入图片描述

6.2 切换分支并提交改动

# 切换分支到b1
git checkout b1
git branch

在这里插入图片描述

# 现在在 b1
cp /etc/passwd ./
git add .
git commit -m "add passwd"
ls
# index.html  passwd

在这里插入图片描述

6.3 回到主分支并合并

git checkout master
ls
# index.html
# 将 b1 合并到 master,同时直接添加合并时的注释信息。
git merge b1 -m "merge b1 to master"
# Fast-forward 时 -m 会被忽略(无合并提交产生)
ls
# index.html  passwd

在这里插入图片描述

合并类型小结:
1、快进合并(Fast-Forward):如果当前分支完全落后于 b1,Git 会直接将当前分支移动到 b1 的最新提交点,不会创建新的合并提交。
2、非快进合并(Non-Fast-Forward):如果当前分支和 b1 分支有分叉历史,Git 会创建一个新的合并提交,提交信息会记录合并时的状态。

6.4 删除分支

git branch -d b1
git branch
# * master

在这里插入图片描述

6.5 使用 .gitignore 忽略无需纳入版本库的文件

echo abc123 > abc123.txt
mkdir mytest
cp /etc/hosts mytest/
git status
# 未跟踪:abc123.txt、mytest/

在这里插入图片描述

# 编写忽略规则
vim .gitignore
# 建议内容:
.gitignore           # 忽略 .gitignore 自身(若确有此需)
*.swp                  # 忽略 Vim 的 .swp 临时文件
abc123.txt
mytest/*
git status
# 无文件要提交,干净的工作区

在这里插入图片描述

实战建议:将 IDE 生成文件、编译产物、临时文件、日志等加入忽略规则,保持仓库整洁。


总结

1、为什么选 Git:分布式、离线可用、分支轻量高效、历史完整,适合现代协作与大型项目。
2、装与配:安装后务必配置全局 user.name/user.email 与默认编辑器,git config --list 检查生效。
3、三大区域心法:桌面(工作区)→ 待提交清单(暂存区)→ 文件柜(版本库);add 决定“本次提交范围”。
4、日常高频命令git status/-sgit addgit commitgit rmgit loggit checkout
5、版本里程碑:用 git tag 给关键提交打标记,便于回溯与发布。
6、协作核心:分支创建/切换/合并清晰流畅;善用 .gitignore 保持仓库整洁。

到这里,你已经具备 Git 的基本操作能力。建议在真实项目中多练 分支工作流 + 提交原子化(一次提交只做一件事、信息清晰),能让协作与回滚都更顺畅。祝使用顺利!

http://www.jsqmd.com/news/56351/

相关文章:

  • 读书日记6
  • 2025年NMN抗衰产品哪款好?10大抗衰产品脱颖而出,综合抗衰睡眠代谢双提升
  • 读书日记5
  • 2025年必收藏的8款AI论文写作神器:高效辅助你的学术之路
  • 怎么选NMN不踩坑?40岁早衰信号频发如何应对?高效抗衰老首选“柏生泰”
  • NMN抗衰产品怎么选?2025年口服抗衰产品TOP10口碑榜,聚焦精准递送温和抗衰
  • 国内哪家过碳酸钠供应商比较好?工业级碳酸钠生产厂家:销量比较好的过碳酸钠厂家
  • 全球过碳酸钠供过碳酸钠源头厂家?江西、浙江过碳酸钠生产厂TOP榜单权威推荐
  • 护肝片哪个牌子靠谱?应酬喝酒熬夜加班人群必看,高效护肝选对不踩坑!
  • 护肝片怎么选效果好不踩坑?2025热门榜T0P10深度拆解,懒人护肝一文搞定
  • 汉文博士 0.7.1 版:词典提速;字体分析器优化
  • 2025年度护肝片十大品牌权威推荐,专家告诉你哪款最值得买
  • 成膜助剂供货商|制造商|批发商推荐:成膜助剂供应商TOP10榜单权威推荐
  • nginx自启脚本
  • 工业级碳酸钠生产厂家有哪些,过碳酸钠生产厂家哪家好?含氧量高的过碳酸钠厂家推荐
  • 痛风反复发作?2025年什么是“从根源改善”的最好降尿酸科技?告别“只降酸”时代!
  • 时间序列信息异常检测算法(5)——PCA异常检测
  • 麦角硫因哪个品牌好?2025科学控糖全指南,突破信息迷雾,定制精准策略
  • 2025降糖高口碑产品深度解析:这九款真实体验佳,闭眼入不踩雷
  • 2025护肝片十大品牌权威推荐,官方旗舰店指路,告诉你哪款最值得买
  • 血糖管理新纪元:2025八大降糖产品深度测评,谁是真王者?
  • 降糖产品哪个好?2025降糖王牌深度评测:为何生诺泰能从根源稳糖?
  • 麦角硫因哪个品牌好?2025降血糖产品红榜测评+科学选购指南
  • 降三高哪款产品好?2025前沿科技深度解析,生诺泰综合表现最佳
  • 降三高哪款产品好?哈佛研究证实,生诺泰是综合调理的最佳选择
  • 减肥哪个效果好且不反弹?2025懒人瘦身好物推荐,权威实测助选最优品
  • 2025年健康减脂方案:哪款产品效果好又安全?腰纪线“代谢重启”成首选
  • 麦角硫因降“三高”哪个产品好?2025年综合代谢管理方案深度剖析
  • 避坑指南:2025年热门减脂代餐权威实测出炉,警惕“无效”与“反弹”陷阱
  • abc434e