当前位置: 首页 > 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  shadowgit 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.dtcms.com/a/525974.html

相关文章:

  • 建设一个网站需要那些技术做网站的职位
  • OK432(AbMole,M9414)
  • 三种 Badcase 精度验证方案详解与 hbm_infer 部署实录
  • 全网门户网站制做互联网行业现状分析
  • 网站安全和信息化建设衣服网站模板
  • 古腾堡布局的网站平面设计做画册用网站
  • 仿魔客吧网站模板cms客户管理系统
  • SpringAI + DeepSeek本地大模型应用开发-智能会话
  • 可视化响应式网站建设下载别人网站的asp
  • ps4gta5网站建设中网站建设硬件计划
  • Windows安装Git教程
  • 付网站建设服务费什么科目专门培训seo的网站
  • 专门做app的网站厦门网站制作哪里好薇
  • WebPages Razor:现代Web开发的新利器
  • 浙人医首创多院区异构多活LIS信创样板:KingbaseES支撑6级容灾,RTO≤10分钟
  • 教育网站制作要多少钱摄影师都在哪些网站发布作品
  • 青岛建设网站企业引擎搜索对人类记忆的影响
  • 高淳网站建设外网代理ip
  • 网站营销话术网络营销的特点和作用
  • DataGrip导出SQL脚本时去除数据库名
  • 构建具备因果推理与长期优化能力的数字农学家Agent系统
  • CS5653 + FS312:音响充电优选,50W充电解决方案
  • 微网站建设需付费吗电子商务网站平台不包括
  • 【Quest开发】控制器输入映射
  • 北京最新网站备案app软件制作教程
  • **发散创新:全面解析项目治理中的流程设计与实现**引言:随着信息技术的飞速发
  • 查询域名的网站小门户网站模板
  • 怎样用前端知识制作企业网站微信运营包括哪些内容
  • 做网站有什么用怎么为网站网页注册免费网址
  • LLCC68是SUB-1G超低功耗无线收发芯片支持150Mhz-960Mhz远距离LORA传输支持GFSK