Git 的简单使用

文章目录

Q&A

这部分记录使用git遇到的问题。

  1. .git文件是什么?

    命令行切换到某个目录下,执行git init 命令后,该目录会自动生成.gt文件夹,表示该目录可以通过 git 进行管理。

  2. .gitignore文件怎么使用?

    使用git add .会将当前目录所有文件都添加到暂存区,而我们有时不想全部添加进去。

    使用touch .gitignore命令生成此文件,通过编辑器打开,输入想让git忽略的目录和文件(不想让git管理的文件夹)即可,每一行表示一个文件或目录。

    因为git一般用于管理文本文件、源码等,这些可以通过git查看内容变化情况。

待更新。。。。。。。

一、Git 入门

1. Git 核心认知

(1)什么是 Git

Git 是一款分布式版本控制系统(DVCS),用于跟踪文件(尤其是代码文件)的修改历史、协作开发、回溯版本、管理分支,解决了多人协作开发中的代码冲突、版本丢失、迭代混乱等问题。

如果我们写一个md文件或者代码,会有版本123...,通常的解决方法是:拷贝一份 => 命名后面添加_v1_v2_完整版等等具有区分性的命名标识,这会导致目录中的文件越来越多,并且空间占用变多。使用 git 后,就不需要拷贝、重命名,却可以使得目录文件简洁,回退到不同版本只需要使用一个命令即可,从而方便我们的文件管理。

(2)Git 与集中式版本控制系统(如 SVN)的核心区别
特性 Git(分布式) SVN(集中式)
仓库存储 每个本地端都有完整仓库(含所有版本历史) 仅中央服务器有完整仓库,本地只有当前版本文件
网络依赖 离线可执行大部分操作(commit、分支等) 大部分操作(提交、更新)依赖网络连接中央服务器
容错性 本地仓库可恢复,服务器故障不影响本地开发 中央服务器故障,无法进行版本管理和协作
分支效率 分支创建、切换、合并速度极快(轻量级) 分支操作笨重,耗时较长
(3)Git 入门的主要目标

掌握「本地版本管理」和「远程协作」的基础流程,能独立完成代码提交、版本回溯、分支操作、远程同步等核心任务。

2. 环境准备

(1)Git 安装
  • Windows 系统 :下载 Git for Windows,默认下一步安装即可(可自定义安装路径,建议保留 Git Bash 终端)。
  • Mac 系统 :两种方式
    1. 安装 Xcode 命令行工具:xcode-select --install
    2. 通过 Homebrew 安装:brew install git
  • Linux 系统 (Ubuntu/Debian):sudo apt-get install git;(CentOS/RHEL):sudo yum install git
(2)验证安装成功

打开终端(Git Bash/系统终端),执行以下命令:

bash 复制代码
git --version

若显示版本号则说明安装成功,若未显示,则检查环境变量是否添加成功。

(3)必做配置:用户身份配置

Git 要求每一次提交必须记录提交者身份,就像交作业需要有姓名及联系方式一样。这个是必做配置,好比QQ发信息必须要QQ号一样。

git 配置用户身份分为两种:

bash 复制代码
# 1. 全局配置(设置一次即可,后续所有本地仓库通用)
# 多次执行会覆盖更新之前的配置,因此用户名和邮箱可以随时修改
git config --global user.name "Joker"  # 自定义用户名
git config --global user.email "Joker@email"    # 常用邮箱

# 2. 局部配置(仅当前仓库生效,适用于多身份场景,去掉 --global 即可),
git config user.name "你的仓库专属用户名"
git config user.email "你的仓库专属邮箱"

如果不进行协同工作,只是在自己电脑自己管理文件,用户名和邮箱可以随便填写,甚至造一个。但是一旦涉及到远程协同,或者使用GitHub,那么联系方式最好真实有效。

关于局部配置,这是针对某个项目的配置,因为一个人可以接手多个项目,而每个项目的"代号"或许是不同的。


3. Git 本地使用流程

先介绍最基础的「本地版本管理」流程,无需连接远程仓库,本地完成文件的版本跟踪。

(1)初始化本地仓库(两种方式)
  • 方式 1:进入需要管理的目录,将之初始化为 Git 仓库(适用于从零开始的项目)

    bash 复制代码
    # 1. 进入目标目录(替换为你的实际目录路径)
    cd D:\Project\MyGitProject
    # 2. 初始化 Git 仓库,执行后目录下会生成隐藏的 .git 文件夹(核心配置目录)
    git init
  • 方式 2:克隆远程仓库到本地(适用于已有远程项目的场景)

    bash 复制代码
    # 完整格式:克隆并自动切换到指定分支
    git clone -b 分支名 远程仓库地址
    # 示例:克隆默认分支(main/master)
    git clone https://github.com/username/your-project.git
(2)工作区操作:添加/修改文件

在仓库目录下新建/修改文件(如 test.pyREADME.md),此时文件处于「工作区」(未被 Git 跟踪)。

(3)暂存区操作:将文件纳入 Git 跟踪

使用 git add 命令将工作区的文件提交到「暂存区」(临时存储,相当于"提交缓冲区"),这是提交到版本库的前置步骤。

bash 复制代码
# 方式 1:添加指定单个文件(替换为你的文件名)
git add test.py
# 方式 2:添加当前目录下所有修改/新增的文件(推荐,高效便捷)
git add .
# 方式 3:添加当前目录下所有修改/新增的文件(与 git add . 功能类似,略有差异,可通用)
git add -A
(4)版本库操作:提交暂存区文件到本地仓库

使用 git commit 命令将暂存区的文件永久提交到「本地版本库」,生成一个唯一的版本快照(含提交信息、作者、时间等)。

bash 复制代码
# 核心格式:-m 后跟随提交说明(必须填写,规范清晰的说明便于后续追溯版本)
git commit -m "提交说明:如 初始化项目、修改test.py功能、修复某某bug"
# 示例:对应你之前的操作
git commit -m "初始状态"

注意:提交说明要简洁明了,避免无意义的描述(如 "update"、"fix"),建议包含「操作类型+内容」。

(5)查看版本历史:追溯提交记录

使用 git log 命令查看本地仓库的所有提交历史,便于回溯版本、查看修改记录。

bash 复制代码
# 方式 1:完整格式显示所有提交历史(按 q 键退出查看)
git log
# 方式 2:简洁格式显示(每行一条记录,仅显示哈希值前7位和提交说明,推荐)
git log --oneline
# 方式 3:显示所有分支的提交历史(含分支合并记录)
git log --graph --oneline --all

二、Git 核心原理及设计思想

理解 Git 的底层原理,能帮助我们更灵活地使用 Git,避免盲目操作导致的版本混乱。

1. Git 核心设计理念

(1)分布式架构设计

这是 Git 与 SVN 最本质的区别:每一个本地仓库都是一个完整的版本库,包含所有版本历史、分支、标签等数据

  • 无需依赖中央服务器即可完成大部分操作(commit、分支管理、版本回溯等);
  • 当远程服务器故障时,可通过任意一个本地仓库恢复远程仓库数据,容错性极强;
  • 多人协作时,本质是「本地仓库」与「远程仓库」之间的版本同步,而非依赖中央服务器统一管理。
(2)快照式存储(而非差异式存储)

Git 存储版本的方式不是「记录每个版本与上一版本的差异」(如 SVN),而是「记录每个版本的完整文件快照」:

  • 当文件未修改时,Git 不会重复存储该文件,而是通过「指针」指向之前的快照,节省存储空间;
  • 当文件修改时,Git 会存储该文件的新快照,保证每个版本都能独立完整恢复;
  • 这种设计使得 Git 的版本回溯、分支切换速度极快,因为无需计算差异,直接切换快照即可。
(3)数据完整性:基于 SHA-1 哈希算法

Git 中所有数据(文件、提交记录、分支、标签等)都会通过 SHA-1 算法生成一个 40 位的十六进制哈希值(如 a1b2c3d4e5f6...),用于:

  • 唯一标识每一份数据,确保数据不被篡改(任何微小修改都会导致哈希值变化);
  • 快速查找数据,Git 通过哈希值索引和定位版本、文件等资源;
  • 你在 git log 中看到的一串字符,就是提交记录的哈希值,可通过哈希值精准回溯版本。

2. Git 核心四层结构(从外到内,关键!)

这是 Git 操作的底层逻辑,所有 Git 命令本质都是在这四层结构之间传递数据,理解后就能明白「为什么要 git add 再 git commit」。

层级名称 英文名称 核心作用 是否可手动修改 对应操作命令
工作区 Working Directory 本地实际操作的目录(存放项目文件) 是(直接编辑) 无专门命令,手动新增/修改文件
暂存区 Staging Area/Index 临时缓冲区,存放待提交的文件修改 否(通过命令) git add(存入)、git reset(移出)
本地版本库 Local Repository 本地核心仓库,存储所有版本快照、分支等 否(通过命令) git commit(存入)、git reset(回溯)
远程版本库 Remote Repository 远程服务器上的仓库(如 GitHub/Gitee) 否(通过命令) git push(上传)、git pull/git fetch(下载)
四层结构数据流转核心逻辑
  1. 开发者在「工作区」编辑文件(新增/修改/删除);
  2. 通过 git add 将工作区的修改提交到「暂存区」(相当于"确认要提交这些修改");
  3. 通过 git commit 将暂存区的修改提交到「本地版本库」(生成永久版本快照,本地版本管理完成);
  4. 如需协作或备份,通过 git push 将本地版本库的提交同步到「远程版本库」;
  5. 如需获取他人的修改,通过 git pull/git fetch 将远程版本库的提交同步到本地版本库,再同步到工作区。

3. Git 核心对象模型

Git 底层通过四种基本对象存储所有数据,构成完整的版本历史:

  1. Blob 对象:存储文件的内容(不存储文件名,仅存储文件数据),一个 Blob 对应一个文件的快照;
  2. Tree 对象:存储目录结构和文件映射关系(记录文件名与对应的 Blob 对象哈希值,以及子目录对应的 Tree 对象);
  3. Commit 对象:存储一次提交的完整信息(包含对应 Tree 对象哈希值、父提交哈希值、作者、时间、提交说明),每一个 Commit 对象对应一个版本;
  4. Tag 对象:标签对象,用于标记重要的版本(如发布版本 v1.0、v2.0),本质是指向 Commit 对象的指针,方便快速定位重要版本。

三、Git 常用命令详解及解释

1. 仓库基础操作命令

命令 核心作用 常用格式 示例 补充说明
git init 初始化本地 Git 仓库 git init cd D:\Project && git init 执行后生成隐藏 .git 文件夹,不可删除
git clone 克隆远程仓库到本地 git clone [-b 分支名] 远程地址 git clone -b dygraph https://gitee.com/xxx.git -b 指定克隆后自动切换的分支,默认切换默认分支
git config 配置 Git 信息(如用户身份) git config [--global] key value git config --global user.name "LiMing" --global 表示全局配置,无则为当前仓库局部配置
git status 查看工作区/暂存区状态(文件修改情况) git status(完整)/ git status -s(简洁) git status -s 快速判断哪些文件未跟踪、已修改、已暂存

2. 版本提交与查看命令

命令 核心作用 常用格式 示例 补充说明
git add 将工作区修改提交到暂存区 git add 文件名 / git add . git add README.md / git add . git add . 提交当前目录所有修改,最常用
git commit 将暂存区修改提交到本地版本库 git commit -m "提交说明" git commit -m "修复:登录功能参数错误" -m 必须指定提交说明,否则会打开默认编辑器
git commit -am 跳过暂存区,直接将已跟踪文件提交到本地仓库 git commit -am "提交说明" git commit -am "更新:优化用户列表样式" 仅对「已被 Git 跟踪的文件」生效,新增文件需先 git add
git log 查看本地提交历史 git log / git log --oneline git log --oneline --graph --graph 显示分支合并图,--all 显示所有分支历史
git show 查看指定版本/文件的详细修改内容 git show 版本哈希值 / git show 文件名 git show a1b2c3d(哈希值前7位即可) 可查看某次提交修改了哪些内容

3. 分支操作命令(Git 核心亮点)

分支是 Git 最强大的功能之一,用于并行开发(如主分支、开发分支、bug修复分支),所有分支操作都是轻量级的。

命令 核心作用 常用格式 示例 补充说明
git branch 查看/创建本地分支 git branch(查看)/ git branch 分支名(创建) git branch dev(创建dev分支) 查看时,当前分支前会有 * 标记
git branch -r 查看远程分支 git branch -r git branch -r 显示远程仓库的所有分支
git branch -a 查看所有分支(本地+远程) git branch -a git branch -a 远程分支通常以 origin/分支名 显示
git checkout 切换分支/恢复工作区文件 git checkout 分支名(切换) git checkout dev(切换到dev分支) 切换分支前,需提交当前分支的修改(避免冲突)
git checkout -b 创建并切换到新分支 git checkout -b 新分支名 git checkout -b test(创建并切换test分支) 等价于 git branch test + git checkout test
git merge 合并指定分支到当前分支 git merge 待合并分支名 git checkout main && git merge dev(将dev合并到main) 合并时可能出现冲突,需手动解决
git branch -d 删除本地已合并的分支 git branch -d 分支名 git branch -d dev -D 表示强制删除未合并的分支(谨慎使用)
git push origin --delete 分支名 删除远程分支 git push origin --delete test git push origin --delete test 删除后需通知协作成员同步更新

4. 远程仓库操作命令(协作核心)

命令 核心作用 常用格式 示例 补充说明
git remote 查看/管理远程仓库关联 git remote -v(查看详细信息) git remote -v 显示远程仓库名称(默认origin)和地址
git remote add 关联远程仓库到本地 git remote add origin 远程地址 git remote add origin https://gitee.com/xxx.git 仅需执行一次,关联后可通过origin操作远程仓库
git push 将本地版本库提交同步到远程仓库 git push [-u] origin 分支名 git push -u origin main -u 绑定当前分支与远程分支,后续可直接 git push
git fetch 拉取远程仓库最新版本到本地版本库(不合并到工作区) git fetch origin 分支名 git fetch origin main 需手动执行 git merge 合并到工作区,更灵活
git pull 拉取远程仓库最新版本并自动合并到当前工作区 git pull origin 分支名 git pull origin dev 等价于 git fetch + git merge,更便捷,优先使用

5. 版本回退命令(修复错误提交)

命令 核心作用 常用格式 示例 补充说明
git reset 回溯本地版本库到指定版本 git reset --hard 版本哈希值 git reset --hard a1b2c3d --hard 会丢弃当前工作区/暂存区修改(谨慎使用);--soft 保留工作区/暂存区修改
git revert 撤销指定提交的修改(生成新提交,不删除历史) git revert 版本哈希值 git revert a1b2c3d 适合已推送到远程仓库的错误提交,不破坏版本历史
git checkout 恢复工作区文件到暂存区/指定版本状态 git checkout -- 文件名 git checkout -- test.py 丢弃工作区对该文件的修改,恢复到暂存区状态

6. 其他常用辅助命令

命令 核心作用 常用格式 示例 补充说明
git diff 查看文件修改差异(工作区vs暂存区/版本库) git diff(工作区vs暂存区)/ git diff 版本哈希值 git diff test.py 显示具体修改的行内容,按 q 退出
git stash 暂存当前工作区未提交的修改(临时切换分支) git stash(暂存)/ git stash pop(恢复) git stash / git stash pop 适用于分支未提交修改,但需紧急切换分支的场景
git ignore 忽略指定文件/目录(不纳入Git跟踪) 创建 .gitignore 文件,写入忽略规则 在文件中写入 node_modules/(忽略该目录) .gitignore 需提交到仓库,供协作成员共享

四、总结

  1. 上手核心 :先掌握「工作区→暂存区→本地版本库→远程版本库」的数据流,核心命令 git addgit commitgit pushgit pull
  2. 原理核心:分布式架构、快照式存储、SHA-1 哈希保证完整性,四层结构是所有操作的底层逻辑;
  3. 常用重点 :分支操作(git branch/git checkout/git merge)、远程协作(git push/git pull)、版本回退(git reset/git revert)是日常开发高频使用的命令;
  4. 使用规范 :提交说明清晰、分支命名规范(如 main/master(主分支)、dev(开发分支)、bugfix/xxx(bug修复分支))、重要版本打标签(git tag v1.0),便于协作和维护。
相关推荐
小龙6 小时前
[Git 报错解决]本地分支落后于远程分支(`non-fast-forward`)
大数据·git·elasticsearch·github
爱敲代码的婷婷婷.7 小时前
git 指定版本回退、临时保存 等操作
git
闲云一鹤8 小时前
Git 焚决!一个绝招助你找回丢失的代码文件!
前端·git
DKunYu8 小时前
2.分支管理
大数据·git·elasticsearch·搜索引擎·gitee
DKunYu9 小时前
1.基本操作
git·gitee
小龙9 小时前
【Git 报错解决】SSH 公钥认证失败(`Permission denied (publickey)`)
运维·git·ssh
哆啦code梦10 小时前
Git Flow架构图解:分支策略全解析
git·git flow·分支策略
Albert Edison10 小时前
【Git】远程操作
git·svn·github
脾气有点小暴10 小时前
Git指令大全(常见版)
前端·git
DKunYu12 小时前
3.远程操作
大数据·git·elasticsearch·搜索引擎·gitee