[Git] 基本操作及用户配置

文章目录

      • 现在所讲,全部是本地Git仓库,不是远程仓库!Git是版本控制工具,而并非只能用远程仓库的版本控制工具!
    • 什么是“仓库”(Repository)?
    • 创建一个 Git 本地仓库:`git init`
    • 配置你的 Git 身份:`git config`
      • 总结一下

上一篇我们了解了 Git 是什么以及如何安装,这篇我们来学习 Git 的最基本操作:创建本地仓库和进行基础配置。

现在,让我们把理论化为实践,开始真正动手使用 Git 来管理我们的文件。

就像我们盖房子要先打地基一样,使用 Git 的第一步,是为你想要进行版本控制的项目“创建”一个 Git 仓库。

现在所讲,全部是本地Git仓库,不是远程仓库!Git是版本控制工具,而并非只能用远程仓库的版本控制工具!

什么是“仓库”(Repository)?

仓库(Repository),听起来是不是有点高大上?其实对于 Git 来说,一个仓库就是一个特殊的文件夹。当你把某个文件夹变成一个 Git 仓库后,Git 就会开始跟踪这个文件夹以及它里面所有文件和子文件夹的变化。

这个特殊的文件夹,以及 Git 在它里面创建的一个隐藏的 .git 子目录,就构成了你的 Git 仓库。你项目的所有版本历史、重要的配置信息等等,都会被 Git 保存在这个 .git 目录里。

**但要理解的是:**真正的版本库是.git文件夹,包含.git的那个文件夹是仓库的工作区,下篇博客会进行详细区分理解。

创建一个 Git 本地仓库:git init

怎么把一个普通的文件夹变成 Git 仓库呢?非常简单,只需要一个命令:git init

这个命令的意思就是:“Git,请你现在开始初始化(initialize)我当前所在的这个文件夹,让它变成一个可以进行版本控制的 Git 仓库吧!”

非常重要的一点: 你必须在你想要进行版本控制的那个文件夹里执行 git init 命令!

来跟着例子做:

假设你有一个项目文件夹,比如叫做 my-awesome-project,你希望用 Git 来管理它。

  1. 打开终端或命令行工具。
  2. 进入到你的项目文件夹里。 使用 cd 命令(change directory)。
# 假设你的项目文件夹路径是 /home/zz/gitcode
cd /home/zz/gitcode

对应着Windows进入一个文件夹:

打开Git Bash在该文件夹路径下:

  1. 确认当前目录是否正确。 可以使用 pwd 命令查看当前路径。
zz@139-159-150-152:~/gitcode$ pwd
/home/zz/gitcode

pwd 命令会显示你当前所在的完整目录路径)

  1. 执行 git init 命令。
zz@139-159-150-152:~/gitcode$ git init

执行后,你会看到 Git 的反馈信息:

Initialized empty Git repository in /home/zz/gitcode/.git/

这句话的意思是:“已在 /home/zz/gitcode/ 这个路径下,初始化了一个空的 Git 仓库,仓库的核心文件放在了 .git/ 这个文件夹里。”恭喜!你已经成功地在 /home/zz/gitcode 文件夹里创建了一个 Git 本地仓库。

  1. 看看发生了什么。 Git 在你的项目文件夹里创建了一个隐藏的 .git 文件夹。在 Linux/macOS 下,你可以使用 ls -all -a 命令(显示所有文件,包括隐藏文件)来查看。
zz@139-159-150-152:~/gitcode$ ll -a
total 12
drwxrwxr-x 3 zz zz 4096 May 5 15:49 ./       # 当前目录
drwxr-xr-x 13 zz zz 4096 May 5 15:47 ../    # 上级目录
drwxrwxr-x 7 zz zz 4096 May 5 15:49 .git/    # Git 仓库目录,它是隐藏的

Windows记得打开隐藏文件显示:

看到了吗?多了一个以点开头的 .git 文件夹。这个 .git 文件夹就是你 Git 仓库的“大脑”! 它包含了 Git 用来跟踪你的项目、保存所有版本历史、分支信息等等的全部数据。【重要警告】千万不要 手动去修改或删除这个 .git 文件夹里面的任何文件! Git 是通过管理这个文件夹来工作。如果你手动去改动它里面的文件,很可能会破坏你的仓库,导致 Git 无法正常跟踪和管理你的项目历史。把它交给 Git 自己去管理就好!如果你好奇 .git 文件夹里有什么,可以使用 tree .git/ 命令(如果你的系统安装了 tree 工具)看看它的结构:

zz@139-159-150-152:~/gitcode$ tree .git/
.git/
├── branches          # 分支相关的简单信息(较少用)
├── config            # 仓库的配置文件
├── description       # 仓库的描述信息(较少用)
├── HEAD              # 指向当前所在的分支
├── hooks             # 存放 Git 钩子脚本的目录
├── info              # 存放一些不希望被提交的文件信息,比如 exclude
├── objects           # Git 存储所有版本数据的“对象”目录
└── refs              # 存放指向提交记录的指针,如分支(heads)和标签(tags)9 directories, 16 files # 目录和文件的数量可能因 Git 版本略有不同

作为新手,你不需要理解这里面每一个文件或文件夹是干嘛的,只需要知道它们是 Git 仓库的核心,并且不要手动去碰它们就够了!

配置你的 Git 身份:git config

刚安装好 Git,并且创建了仓库后,Git 希望知道你是谁。这是非常重要的一步!

为什么需要知道你是谁呢?因为当你用 Git 保存你的改动(我们后面会称为“提交”/commit)时,Git 会把你的名字邮箱地址记录下来,作为这次改动的作者信息。这对于跟踪谁做了哪些修改,尤其是在团队协作中,非常重要。

我们可以使用 git config 命令来设置你的名字和邮箱。

需要设置两项基本信息:

  1. 你的名字 (user.name):可以是你的真实姓名、昵称或任何你希望用来标识自己的名字。
  2. 你的邮箱 (user.email):通常是你的常用邮箱地址,或者是专门用于 Git 提交的邮箱。

设置命令:

# 设置你的名字
git config [--global] user.name "你的名字"# 设置你的邮箱
git config [--global] user.email "你的邮箱@example.com"

注意:

  • 直接使用git config xxxx设置的是当前pwd下的仓库的配置信息,而不是你电脑上所有的仓库的配置信息。
  • 请将 "你的名字" 替换成你自己的名字(例如 "Zhang San")。
  • 请将 "你的邮箱@example.com" 替换成你自己的邮箱地址(例如 "zhangsan@example.com")。只要格式正确即可,Git 不会立即去验证这个邮箱是否存在。

关于 --global 参数:

这是一个非常常用的参数,理解它很重要:

  • git config --global ...:当你加上 --global 参数时,你设置的名字和邮箱会应用到你这台电脑上所有使用 Git 的仓库。这意味着你只需要设置一次,以后在这台电脑上无论使用哪个 Git 仓库,你的身份都会是这个。对于大多数个人用户来说,这是最方便的设置方式。
    • **建议新手第一次配置时就使用 **--global,这样以后就不用在每个新仓库里重复设置了。
    • 执行带 --global 的配置命令不需要进入特定的 Git 仓库目录,可以在系统的任何地方执行。
  • git config ...** (不带 --global):如果你在执行 git config 命令时不加** --global 参数,那么这个设置只对你当前所在的这个 Git 仓库生效。如果你需要在不同的项目中使用不同的名字或邮箱(比如公司项目用工作邮箱,个人项目用个人邮箱),就可以进入到特定的项目文件夹(也就是 Git 仓库里),然后不带 --global 执行 git config 命令来单独设置。这种局部配置会覆盖全局配置。请注意,执行不带 --global 的配置命令必须在 Git 仓库目录下。

查看你的 Git 配置:

想看看你已经设置了哪些 Git 配置信息?使用这个命令:

git config -l

(这里的 -l--list 的缩写,意思是列出所有配置)

这个命令会列出 Git 当前知道的所有配置信息,包括全局配置、系统配置(如果存在)以及当前仓库的本地配置(如果你在仓库目录里执行的话)。

删除你的 Git 配置:

如果你需要删除之前设置的名字或邮箱配置,可以使用 --unset 参数:

# 删除全局设置的名字
git config --global --unset user.name# 删除全局设置的邮箱
git config --global --unset user.email

如果你是删除不带 --global 的本地配置,同样去掉 --global 参数并在仓库目录里执行即可。

总结一下

到这里,你已经掌握了使用 Git 的最初两步:

  1. 使用 git init 命令在你的项目文件夹里创建一个 Git 本地仓库,让 Git 开始为你管理文件。记住 .git 文件夹是核心,但不要手动修改它!
  2. 使用 git config 命令设置你的名字和邮箱,以便 Git 知道是谁在进行操作。通常使用 --global 参数进行全局设置一次即可。

现在,你的项目文件夹已经是一个 Git 仓库了,并且 Git 知道你是谁。你已经为使用 Git 来跟踪、保存和管理你的文件改动打好了坚实的基础!

在下一篇博客中,我们将学习如何将你的文件添加到 Git 的跟踪范围,并保存你的第一次改cle

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layui 介绍

layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈,从源代码到使用…

笔记:NAT

一、NAT 的基本概念 NAT(Network Address Translation,网络地址转换) 是一种在 IP 网络中重新映射 IP 地址的技术,主要用于解决 IPv4 地址短缺问题,同时提供一定的网络安全防护作用。 功能: 将内部网络&am…

cursor/vscode启动项目connect ETIMEDOUT 127.0.0.1:xx

现象: 上午正常使用cursor/vscode,因为需要写前端安装了nodejs16.20和vue2,结果下午启动前端服务无法访问,浏览器一直转圈。接着测试运行最简单的flask服务,vscode报错connect ETIMEDOUT 127.0.0.1:xx,要么…

EXO分布式部署deepseek r1

EXO 是一个支持分布式 AI 计算的框架,可以用于在多个设备(包括 Mac Studio)上运行大语言模型(LLM)。以下是联调 Mac Studio 512GB 的步骤: 安装 EXO • 从 EXO GitHub 仓库 下载源码或使用 git clone 获取…

python训练营打卡第30天

模块和库的导入 知识点回顾: 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致) 一、导入官方库 1.标准导入:导入整个库 import mathprint(&quo…

Unity 多时间源Timer定时器实战分享:健壮性、高效性、多线程安全与稳定性能全面解析

简介 Timer 是一个 Unity 环境下高效、灵活的定时任务调度系统,支持以下功能: •支持多种时间源(游戏时间 / 非缩放时间 / 真实时间) •支持一次性延迟执行和重复执行 •提供 ID、回调、目标对象等多种查询和销毁方式 •内建…

深入理解Docker和K8S

深入理解Docker和K8S Docker 是大型架构的必备技能,也是云原生核心。Docker 容器化作为一种轻量级的虚拟化技术,其核心思想:将应用程序及其所有依赖项打包在一起,形成一个可移植的单元。 容器的本质是进程: 容器是在…

docker中使用openresty

1.为什么要使用openresty 我这边是因为要使用1Panel,第一个最大的原因,就是图方便,比较可以一键安装。但以前一直都是直接安装nginx。所以需要一个过度。 2.如何查看openResty使用了nginx哪个版本 /usr/local/openresty/nginx/sbin/nginx …

CSS【详解】弹性布局 flex

适用场景 一维(行或列)布局 基本概念 包裹所有被布局元素的父元素为容器 所有被布局的元素为项目 项目的排列方向(垂直/水平)为主轴 与主轴垂直的方向交交叉轴 容器上启用 flex 布局 将容器的 display 样式设置为 flex 或 i…

全能视频处理工具介绍说明

软件介绍 本文介绍的软件是FFmpeg小白助手,它是一款视频处理工具。 使用便捷性 这款FFmpeg小白助手无需安装,解压出来就能够直接投入使用。 主要功能概述 该工具主要具备格式转换、文件裁剪、文件压缩、文件合并这四大功能。 格式转换能力 软件支持…

Linux中的DNS的安装与配置

DNS简介 DNS(DomainNameSystem)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。 DNS使用的是53端口 通常DNS是以UDP这个较快速的数据传输协议来查询的,但是没有查…

tshark的使用技巧(wireshark的命令行,类似tcpdump):转换格式,设置filter

tshark的使用技巧(wireshark的命令行,类似tcpdump):转换格式,设置filter tshark一般在 C:\Program Files\Wireshark 使用管理员权限 打开cmd tshark -D 列出支持抓包的接口: c:\Program Files\Wiresh…

vscode打开的文件被覆盖/只能打开两个文件(Visual Studio Code)

vscode打开的文件被覆盖/只能打开两个文件(Visual Studio Code) 单击代码文件:是预览模式,只会显示有限的一两个文件,在一个tab里更新显示 双击代码文件:是编辑模式,可以同时显示多个代码文件…

唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效

一、客户现场 客户主要从事于卷烟纸、成型纸、烟草制造业用纸及其他特定用途纸类制品的加工、生产与销售。在其厂区内,叉车频繁作业,车间环境复杂。经实地查看,发现几大安全隐患: 门口拐角隐患:门口拐角处因卷帘门阻…

Debezium快照事件监听器系统设计

Debezium快照事件监听器系统设计 1. 系统概述 1.1 设计目标 为 Debezium 的快照过程提供可扩展的事件监听机制允许外部系统在快照过程中执行自定义逻辑提供线程安全的事件分发机制确保监听器的异常不会影响主快照流程1.2 核心功能 表快照开始事件监听表快照完成事件监听行数据…

Ubuntu 20.04安装及配置docker

在安装docker的过程中主要参考博客:ubuntu20.04 安装docker (详细版) 但是在测试: sudo docker run hello-world 时报错: docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request ca…

第23天-Python Flet 开发指南

环境准备 pip install flet 示例1:基础计数器应用 import flet as ftdef main(page: ft.Page):page.title = "计数器"page.vertical_alignment = ft.MainAxisAlignment.CENTERtxt_number = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, wid…

牛客网NC21989:牛牛学取余

牛客网NC21989:牛牛学取余 📝 题目描述 ⏱️ 限制条件 时间限制:C/C/Rust/Pascal 1秒,其他语言2秒空间限制:C/C/Rust/Pascal 32 M,其他语言64 M输入范围:两个整数,在int范围内 📥…

unity XCharts插件生成曲线图在UICanvas中

【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用_unity xcharts-CSDN博客

自动驾驶传感器数据处理:Python 如何让无人车更智能?

自动驾驶传感器数据处理:Python 如何让无人车更智能? 1. 引言:为什么自动驾驶离不开数据处理? 自动驾驶一直被誉为人工智能最具挑战性的应用之一,而其背后的核心技术正是 多传感器融合与数据处理。 一辆智能驾驶汽车,通常搭载: 激光雷达(LiDAR) —— 3D 环境感知,…