Git版本控制工具(一)

发布时间:2026/10/10 16:39:03

Git版本控制工具(一) 一、Git安装Linux-centos安装命令sudoyum-yinstallgit检查版本安装完成后查看git版本,有版本信息说明安转成功。git--versionLinux-ubuntu安装命令sudoapt-getinstallgit-y检查版本git --versionWindows:打开cmd,输入一下安装命令wingetinstall--idGit.Git-e--sourcewinget验证git --version二、Git基本操作1.创建本地仓库命令gitinit当前目录下会创建出一个.git隐藏文件。里面包含了 Git 用来跟踪和管理文件修改历史的所有核心数据和细节不能修改里面的任何内容。2.配置git为什么要配置标识每一次代码提交commit的作者身份表明是谁提交的代码。如何配置?全局配置:在整个Linux机器上都使用该配置信息作为作者身份。gitconfig--globaluser.nameYour namegitconfig--globaluser.emailemailexample.com局部配置只对当前仓库生效。gitconfig--globaluser.nameYour namegitconfig--globaluser.emailemailexample.com确认是否已配置好gitconfig-l有作者身份标识说明就已配置好。删除配置gitconfig[--global]--unsetuser.namegitconfig[--global]--unsetuser.email加上--global就是删除机器上所有的git身份标识。3.工作区、暂存区、版本库工作区写代码界面的左侧目录就是工作区。.git不属于工作区属于Git的版本库。暂存区英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件.git/index中所以我们把暂存区有时也叫作索引index。版本库工作区有一个隐藏目录.git这个不算工作区而是Git的版本库。工作区是本地写代码的地方写完代码后git add [要提交的文件]将工作区内容的修改(新增、删除、修改)添加至版本库.git的暂存区修改的工作区内容会写入版本库的一个新的git对象中有许多的新的git对象创建形成对象库(objects)暂存区储存的就是git对象的指针然后 git commit -m “描述本次修改的信息”将暂存区内容提交至当前所在分支git branch查看下这一步才会被正式写到版本库中成为一条可以随时追踪和还原的历史记录最后git push origin 当前的分支将修改的代码推送至远程仓库。4.添加文件到版本库添加文件到版本库必须经历git add和git commit后才会被正式写入到版本库中。为什么要有git add 和git commit 操作只有git add 不也可以吗理论上可以但是这样效率很低。使用git add 和git commit 操作可以多次修改不同的文件分批使用 git add 把它们放到暂存区最后确认无误后再用 git commit 一次性把它们作为一个完整的版本提交上去。1)添加到暂存区添加一个文件或多个文件到暂存区git add [file1] [file2] ...添加指定目录到暂存区git add [dir]添加当前目录的所有改动到暂存区git add .2)提交到版本库git commint -m 描述本次修改的信息描述信息尤为重要描述本次做了哪些修改可以更好的对历史版本管理。3)查看历史提交记录git log:显示从近到远的提交日志。git log --prettyoneline显示更简洁的提交日志。可看到提交日志变简洁了每条日志包含commit id、提交描述信息。注commit id是用SHA1计算的一个非常大的数字并用16进制表示了出来。查看.git文件GIt就是根据.git隐藏文件做版本管理里面包含了 Git 用来跟踪和管理文件修改历史的所有核心数据和细节其中 HEAD 是 Git 中一个指针它表示当前所在的位置可以查看HEAD是什么可以知道它指向当前分支master而当前分支maseter中的内容是什么呢?查询得知是最近一次提交的commit id。commit id就是对象库中的一个git对象的索引。通过commit id查看git对象中内容命令git cat-file -p commit id查看最新commit id所指向git对象中的内容里面有上一次提交的commit id,和tree 对象,还有作者是谁、是谁提交的tree 对象是 Git 中保存目录结构的对象它记录“这个目录里面有哪些文件和子目录”。通过进入tree对象就能一步步的找到当前版本中所有的信息。查看tree对象中的内容管理了本目录下的文件和目录。由于最新一次提交正是改变了README.md文件中的内容。所以我们通过.git版本库追溯到上一个版本的README.md。可以发现最新一次的提交正是删除了README.md文件中的一些信息。追溯到上一个版本后还原了之前删除的信息。5.状态查询:命令git status作用查看当前仓库的状态。告诉我们当前在哪个分支、哪些(工作区)文件被修改了、哪些文件已经暂存、哪些文件还没有提交。Git status中的常见状态状态含义modified文件被修改untracked新文件Git未跟踪staged已进入暂存区nothing to commit没有需要提交的内容ahead本地领先远程behind本地落后远程6.显示差异git diff 是 Git 的“代码变化查看器”用于在提交前确认自己改了什么。1)显示目前工作区和暂存区之间的差异命令git diff [文件名]作用查看具体代码变化。 -307,6 307,14 namespace chat_server {,这是 diff 定位信息,格式 -旧文件位置,旧代码数量 新文件位置,新代码数量 解释-307,6 旧版本 从第307行开始 显示6行 307,14 新版本 从第307行开始 显示14行2)显示暂存区和commit之间的差异命令git diff --cached3显示当前工作区和最新commit之间的差异命令git diff HEAD4比较两个版本差异命令git diff commit1 commit25比较两个分支命令git diff 分支1 分支27.版本回退也可回退到当前版本应用场景常用于撤销 commit、版本回退、重新整理提交命令git reset [--soft | --mixed | --hard] [HEAD]HEAD说明可以写commit id,表示指定退回的版本。HEAD表示当前版本HEAD^表示上一个版本HEAD^^表示上上一个版本以此类推HEAD~0表示当前版本HEAD~1表示上一个版本HEAD~2表示上上一个版本以此类推注--hard慎用回退后之前的所有修改代码将会丢失。--mixed是默认选项如果执行了git reset --hard commit_id,后悔了怎么办使用git reflog命令查看本地的每一次命令。可以使用局部的commit id也可以回退。版本回退的本质修改分支(master)指向的commit id,即完成了版本回退。8.撤销修改我们在开发时发现自己写的代码很烂或写出了很多新的BUG,想恢复到上一个版本重新开发这时候就需要用到撤销修改了。撤销修改对应了三种情况只在工作区写了代码没有提交至暂存区在工作区写了代码提交到了暂存区但是没有提交到版本库在工作区写了代码提交到了暂存区也提交到了版本库解决方式9.删除版本库中的文件对于已经提交到版本库中的文件使用rm filename,只能删除当前工作区中的文件版本库中的文件并没有删除。需要将删除的文件经过git add 删除的文件名再git commit -m delete filename后版本库的文件才被删除。或则使用git rm 删除的文件名这条命令帮我们做了两件事一是在工作区中删除文件二是在暂存区中删除文件。然后再执行git commit -m “delete filename”版本库的文件才被删除。最后git push远程同步删除文件。
延伸阅读

更多相关文章

2026/10/10 16:39:03

ZCode 计划模式实战:大任务不翻车的拆解法(附 5 个可抄模板)

💡 看完你能带走:判断"该不该进计划模式"的口诀、计划五要素模板、拆解四原则、多方案的取舍对比法、执行期的"活文档"纠偏法,以及 6 个大任务翻车复盘。5 个模板全部可直接照抄,建议先收藏。🧭 先分清:什么样的任务,值得先进计划模…

2026/10/10 16:34:01

羽毛球轨迹预测代码解析:从数据预处理到STGCN建模

简介:本资源是一套基于深度学习的轨迹预测完整实现代码,面向人工智能初学者、高校学生及轨迹分析方向的研究者,解决船舶、车辆等移动对象未来位置预测的实际建模问题。压缩包共11个文件,含7个核心Python脚本(如lstm模型…

2026/10/10 17:49:54

小波滤波实战:加速度计信号去噪的Python实现与避坑指南

简介:这份资源面向物联网、传感器及数据分析方向的开发者与学习者,聚焦一维传感数据的小波滤波去噪实践。内容围绕小波分析基础、小波滤波原理及Python实现展开,帮助读者理解如何借助pywt库完成信号分解、阈值处理与重构,从而提取…

2026/10/10 17:49:54

T型三电平虚拟同步机参数自适应与并离网切换仿真

1. 内容整体设计与思路拆解1.1 为什么需要VSG:从“无惯性”到“虚拟同步”我刚开始接触微电网逆变器控制的时候,最先看到的是下垂控制(Droop Control),它模拟的是同步发电机的静态外特性——有功-频率(P-f&…

2026/10/10 17:49:54

R16 GWUS组唤醒信号:eMTC终端省电与调度优化解析

最近手头在调研3GPP LTE Release 16的eMTC增强特性,重点把GWUS(Group Wake-Up Signal)的方案逻辑翻了一遍。R16不算一个“大秀肌肉”的版本,隔壁NR、URLLC、V2X都抢了风头,但GWUS对海量低成本物联网终端的省电和网络接…

2026/10/10 17:49:54

语音广播系统jyw.rar部署排障实战:从解压到IP广播全流程

简介:面向局域网内部通信场景的语音广播工具源码包,适合需要快速搭建多机音频通知、教学广播或应急喊话系统的开发人员与运维人员。资源以C语言工程为主,共8个文件,涵盖源码(.c)、头文件(.h&…

2026/10/10 17:49:54

国产高分遥感影像土地分类数据集实战指南

简介:本资源是一份面向遥感图像分析与深度学习初学者的高质量土地覆盖分类数据集,适用于计算机视觉课程实践、毕业设计及科研项目中的多类别图像分类任务。数据集共约17,500张已标注遥感影像,涵盖游乐场、水体、飞机场、森林等46类典型地物&a…

2026/10/10 7:31:36

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑