深入解析:【Git】Git 简介及基本操作

news/2025/9/26 15:01:44/文章来源:https://www.cnblogs.com/lxjshuju/p/19113508

目录

  • 一、Git 简介
    • 1.1 LInux下安装Git
      • 1.1.1 centos下的命令
      • 1.1.2 ubuntu下的命令
  • 二、基本操作
    • 2.1 创建本地仓库
    • 2.2 配置本地仓库
    • 2.3 认识⼯作区、暂存区、版本库
    • 2.4 添加文件
    • 2.5 查看 .git
    • 2.6 修改文档
    • 2.7 版本回退
    • 2.8 撤销修改
      • 2.8.1 对于⼯作区的代码,还没有 add
      • 2.8.2 已经 add ,但没有 commit
      • 2.8.3 已经 commit
      • 2.9 删除材料

一、Git 简介

在工作和学习中,我们通常会遇到同一个报告、作业反复修改的时候,如果每一次修改后的版本都是有意义的,那么我们就要将每一个版本保存下来。但如果一旦修改过多,你还会记得这些版本各⾃都是修改了什么吗?

为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。目前主流的版本控制器就是Git。

版本控制器:就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。行记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。

注意事项:

  • Git可以管理所有格式的文件;
  • 例如文本文件,你在文件中修改了什么,Git是可以记录下来的。
  • 但是二进制文件,你在文档修改了什么,Git是不知道的,只能记录每次修改导致文件大小的变化。

1.1 LInux下安装Git

1.1.1 centos下的命令

  1. 看看系统有没有安装Git:git --version。没有结果:-bash: git: command not found
  2. 安装 Git: sudo yum -y install git

1.1.2 ubuntu下的命令

  1. 看看系统有没有安装Git:git --version。没有结果:Command 'git' not found, but can be installed with:
  2. 安装 Git: sudo apt-get install git -y

二、基本操作

2.1 创建本地仓库

仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。

  1. 创建一个目录: mkdir gitcode,进入目录:cd gitcode
  2. 创建本地仓库:git init

2.2 安装本地仓库

当安装 Git 后⾸先要做的事情是设置你的 ⽤⼾名称 和 e-mail 地址。

git config [--global] user.name "Your Name"
git config [--global] user.email "email@example.com"
# 把 Your Name 改成你的昵称
# 把 email@example.com 改成邮箱的格式,只要格式正确即可。
# 加上 --global 代表全局 会将本地的所有仓库都配置,删除时也要加上 -- global 才能删除。

git config -l查看配置项:

删除对应的配置命令为:

git config [--global] --unset user.name

git config [--global] --unset user.email

2.3 认识⼯作区、暂存区、版本库

  • 版本库(仓库):就是指上面创建的 .git 文件
  • 放入 gitcode 目录下的。所以我们将gitcode 目录下的区域(除 .git)称为 工作区。就是工作区:我们在上面是将 .git 创建在 gitcode 目录下的,由于我们是不能手动去对 .git 文件进行任何修改的,修改后可能导致本地仓库报废,我们的文件都
  • 暂存区 / 索引:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,大家把暂存区有时也叫作索引(index)。
    关系图

2.4 添加文件

先创建一个文件到工作区: touch ReadMe

  • 添加到暂存区:
    • git add .将当前工作区的文件全部添加
    • git add [file1] [file2] ... 将文件[file1] [file2] …添加
  • 提交到仓库
    • git commit -m "描述" 提交暂存区全部内容到本地仓库中
    • git commit [file1] [file2] ... -m "描述"提交暂存区 [file1] [file2] …到本地仓库中

git log 可以打印从近到远的所有提交记录:

2.5 查看 .git

  1. index 就是大家的暂存区,add 后的内容都是添加到这⾥的。
  2. HEAD 就是我们的默认指向 master 分⽀的指针.
  3. ⽽默认的 master 分⽀,其实就是: .git/refs/heads/master,存放的是最新一次提交的commit id

    打印的东西就是最新的commit id
  4. objects 为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏ git add 命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于 “.git/objects” ⽬录下,
    查找 object 时要将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称。使⽤git cat-file [option] [commit id] 命令来查看版本库对象的内容。

2.6 修改材料

大家Git本质上是 跟踪并管理 修改的,而不是文件本身。

查看当前仓库的状态:git status,⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改。

查看工作区域仓库文件不同:git diff [file],⽤来显⽰暂存区和⼯作区⽂件的差异。
也可以使⽤ git diff HEAD -- [file] 命令来查看版本库和⼯作区⽂件的区别。

2.7 版本回退

执⾏ git reset 命令⽤于回退版本。
回退”本质是要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定:
语法格式为: git reset [--soft | --mixed | --hard] [HEAD]

  • --soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。

  • --mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。

  • --hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。

HEAD 说明:

  • 可直接写成 commit id,表⽰指定退回的版本
    • HEAD 表⽰当前版本
    • HEAD^ 上⼀个版本
    • HEAD^^ 上上⼀个版本。 以此类推…
  • 也行使⽤ 〜数字表⽰:
    • HEAD~0表⽰当前版本
    • HEAD~1上⼀个版本
    • HEAD^2 上上⼀个版本。以此类推…

修改:

想吃后悔药了:

  • 当终端有原来的commit id的时候直接复制执行git reset命令即可:
  • 没有,就先使用git reflog命令拿到 commit id,再执行

2.8 撤销修改

垃圾,想恢复到上⼀个版本。就是我们的⼯作区写了很⻓时间代码,越写越写不下去,觉得⾃⼰写的实在

2.8.1 对于⼯作区的代码,还没有 add

创造条件:
-

不建议管理:

建议操作:

2.8.2 已经 add ,但没有 commit

创造条件:

操作:

  • git reset 回退命令,该命令如果使⽤--mixed 参数,可以将暂存区的内容退回为指定的版本内容,但⼯作区⽂件保持不变,就回到第一种情况了。
  • git reset 回退命令,该命令如果使⽤--hard 参数,工作区文件一起修改。

2.8.3 已经 commit

我们可以 git reset --hard HEAD^ 回退到上⼀个版本,有条件的,就是你还没有把⾃⼰的本地版本库推送到远程。

2.9 删除材料

  1. 先在工作区删除档案,再 add 和commit
  2. 使用git rm [filename] 删除工作区和暂存区的文件,在commit一下就行。

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

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

相关文章

hutool主要内容list

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅 Hutool = Hu + tool,是原公司项目底层代码剥离后的开源库,“Hu”是公司名称的表示,too…

做图赚钱的网站有哪些中国能源建设集团有限公司是央企

QDomDocument类代表了一个XML文件 QDomDocument类代表整个的XML文件。概念上讲:它是文档树的根节点,并提供了文档数据的基本访问方法。由于元素、文本节点、注释、指令执行等等不可能脱离一个文档的上下文,所以文档类也包含了需要用来创建这些…

Kurt-Blender零基础教程:第2章:建模篇——第3节:陈列/父子级/蒙皮/置换修改器与小狐狸角色建模 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站建设的目标客户分析建做网站

使用 Yelp 数据集进行用户画像(User Profiling)是一项有趣的任务,可以理解用户的偏好、行为和特征。以下是总结的一个基本的步骤,帮助构建用户画像 pandas 加载数据: import pandas as pd# 加载数据 users pd.read_…

中职示范校建设专题网站如何建微网站

根本原因分析中的5WHY分析法是从下列哪几个层面实施的? A. 制造角度 B. 检验角度 C. 体系角度 D. 以上都是 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案

20250916_QQ_Powershell

流量分析, 应急响应, WebShell, Powshell, XORTags:流量分析,应急响应,WebShell,Powshell,XOR 0x00. 题目 找出受攻击主机回连的IP地址和端口号 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh…

完整教程:HTTP安全响应头--CSP(Content-Security-Policy)

完整教程:HTTP安全响应头--CSP(Content-Security-Policy)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

学习:uniapp全栈微信小程序vue3后台(26) - 指南

学习:uniapp全栈微信小程序vue3后台(26) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

HTML5介绍(HTML5特性、HTML5功能) - 指南

HTML5介绍(HTML5特性、HTML5功能) - 指南2025-09-26 14:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

Experiment1

Experiment 1 实验任务1 1.1 #include <stdio.h> int main() {printf(" O \n");printf("<H>\n");printf("I I\n");printf(" O \n");printf("<H>\n&qu…

读书笔记:Oracle 自动索引:让数据库自己管索引?

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

海安县建设局网站先备案还是先做网站

分类目录&#xff1a;《系统学习Python》总目录 文章《系统学习Python——装饰器&#xff1a;“私有“和“公有“属性案例-[实现私有属性]》中的代码有点复杂&#xff0c;并且你最好自己跟踪运行它&#xff0c;看看它是如何工作的。然而为了帮助你理解&#xff0c;这里给出一些…

1_2025.9.26_1

题目:[https://codeforces.com/problemset/problem/2140/E1] ac代码:[https://codeforces.com/contest/2140/submission/340570458] 思路:状压dp,因m<=2,n<=20,所以将状态压缩遍历,再根据题解给的式子写即…

故障处理:Oracle RAC集群CTSS时钟同步故障案例分析与解决

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本案例来自一…

Linux系统提权-web/普通用户-docker逃逸提权shell交互

Linux系统提权-web/普通用户-docker逃逸&提权&shell交互 docker提权分几种情况 1、权限在docker里面逃逸 提权(宿主机) 2、权限不在docker里面借助docker应用去提权(用户归属是docker组 拉镜像 提权)参考链接h…

网站开发z亿玛酷1负责网页设计与制作策划书

目录 1.加载镜像并进入容器 2.安装依赖 3.在docker外部git-clone lcm 4.将get-clone的lcm复制到容器中 5.编译库 6.将可执行文件复制到容器中 7.进入可执行文件 8.编译可执行文件 9.再开一个终端运行程序 10.将以上容器打成镜像并导出 1.加载镜像并进入容器 sudo do…

PostgreSQL技术大讲堂 - 第106讲:分区表索引优化

PostgreSQL从入门到精通系列课程,100+节PG技术讲解,让你从小白一步步成长为独当一面的PG专业人员,点击这里查看章节内容,持续更新,欢迎加入。 第106讲:重讲分区表索引优化主要内容:1、全局索引与本地分区索引的…

AI智能体:从认知到实践

人工智能时代:时代的机遇和挑战。潮起AI Agent智能体到底是什么,为什么大家都在卷AI智能体1、什么是AI Agent智能体? 规划感知,决策,行动 ===》记忆 =》》大语言模型理解智能体,人工智能的本质是仿生技术,我们…

Kinect屏幕边缘检测不灵敏的解决方案

在做体感项目时,在边缘部分的抓取动作识别非常差于是我做出了优化,不采用原本的映射关系:假设原本人物站在中间,保持位置不动,右手臂向右伸直,终点为屏幕的极限位置此时我们并不将手臂伸直的位置映射到屏幕的极限…

网站建设话术关键词wordpress 仿豆瓣标注

1、目的 使公司的图纸得到有效的控制&#xff0c;确保生产所用的图纸为最新有效版本&#xff0c;避免因图纸管理不当造成的损失。 2、定义 本制度所述的图纸包括产品总装图、装配图、零件图、工装图纸、检具图纸、包装图纸、工艺流程 3、范围 客户提供的图纸&#xff0c;技…