资讯动态

git认识和基本操作

发布时间:2026/8/13 9:47:16 来源:尧图企业网站定制
一.初识 Git解决文档版本混乱的版本控制器日常工作里不管是写项目设计文档还是敲开发代码总会反复修改文件。就像图里这份设计文档第一次修改存为设计文档v1二次改动生成v2一路迭代到v5甚至更多版本。版本文件越堆越多麻烦也随之而来隔一段时间再回头看根本分不清每一个版本具体改了哪些内容想找回某一次删掉的内容要挨个打开旧文件对比多人协作时互相传来传去文件重名、内容覆盖更是家常便饭手动维护版本效率极低还极易出错。那么怎么解决呢git版本控制器就是专门用来记录文件每一次修改、管理版本迭代的工具系统。它会完整留存文件每一次改动记录改了哪几行、新增 / 删除了什么内容、修改人、修改时间都清晰存档。有了它不用手动复制一堆带版本后缀的文件任意时刻都能一键切换回历史版本清晰查阅每一轮迭代的改动细节从根源上解决版本混乱问题。git适用于所有类型文件但是二进制文件因为内容不可知所以只保留了其文件大小的改动。二.安装并且配置文件1.安装# 1. 安装git sudo apt update sudo apt install git # 2. 校验版本 git --version # 3. 创建项目文件夹 mkdir gitcode # 4. 进入文件夹 cd gitcode # 5. 初始化git仓库生成.git git init # 6. 安装tree查看.git目录结构 sudo apt install tree # 7. 打印.git内部树形结构 tree .git在当前文件夹内生成隐藏目录 .git这个文件夹就是整个 Git 仓库的核心所有版本记录、修改快照、分支、提交日志全部存在这里。2.配置git# 1. 设置当前仓库本地提交信息 git config user.name hyb git config user.email 123123qq.com # 2. 查看所有配置 git config -l # 3. 删除本地仓库的用户名、邮箱全局仍保留列表还会显示name git config --unset user.name git config --unset user.email # 4. 设置全局通用提交信息所有项目生效 git config --global user.name hyb git config --global user.email 123123qq.com # 5. 删除全局用户名 git config --global --unset user.name三.git内部模块认识1.认识工作区、暂存区、版本库git结构主要分为三大块。・工作区是在电脑上你要写代码或文件的目录。只要所在目录向上能找到 .git或者跟它在当前目录下就属于它的工作区git都可以作用・暂存区英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件.git/index中我们把暂存区有时也叫作索引index。・版本库又名仓库英文名 repository 。工作区有一个隐藏目录 .git 它不算工作区而是 Git 的版本库。这个版本库里面的所有文件都可以被 Git 管理起来每个文件的修改、删除Git 都能跟踪以便任何时刻都可以追踪历史或者在将来某个时刻可以 “还原”。1.index 就是我们的暂存区但是内部为指针表指向object暂存的工作区修改内容。2. HEAD 就是我们的默认指向 master 分支的指针3.master就是commit之后最新的指向oject和add一样的指针。还有commit相关的指针表指向object4.objects 为 Git 的对象库里面包含了创建的各种版本库对象及内容。可以简单理解为存放了git维护的所有修改内容。只要文件add修改内容就会被object记录commit就会永久记录。详细的我们后面再了解。总结.git是目录文件向仓库里面添加文件必须使用add和commit。通过以下实践来说明.git目录里各个元素。2.相关操作操作1添加文件git add• 添加一个或多个文件到暂存区 git add [file1] [file2] ...• 添加指定目录到暂存区包括子目录 git add [dir]• 添加当前目录下的所有文件改动到暂存区 git add .git commit——将暂存区内容添加到本地仓库中• 提交暂存区全部内容到本地仓库中: git commit -m message• 提交暂存区的指定文件到仓库区 git commit [file1] [file2] ... -m message 注意 git commit 后面的 -m 选项要跟上描述本次提交的 message由用户自己完成这部分内容绝对不能省略并要好好描述是用来记录你的提交细节是给我们人看的。commit成功之后信息显示会有相关1个文件改动两行内容插入我们还可以多次addcommit一次就可以提交所有文件我们也可以通过git log来查看历史commit操作。git log --prettyoneline:如果嫌弃信息太杂乱可以使用这个只有commit id我们来查看git文件我们就可以看到index查看HEAD发现HEAD指向master查看master是什么东西保持最新的commit id查找 object 时要将 commit id 分成2部分其前2位是文件夹名称后38位是文件名称。 找到这个文件之后一般不能直接看到里面是什么该类文件是经过 sha 安全哈希算法加密过的文件好在我们可以使用 git cat-file 命令来查看版本库对象的内容我们来看一下master的commit id我们发现master指向的是最新commit的信息我们再来看一下图片中tree的id选择其中id看看原来是文件最新内容。总结在后续的学习过程中最好能够把常见的git操作和.git目录里面的结构内容变化对应起来学习这样有助于我们理解git底层的细节流程。操作2查看工作区内容修改之后信息工作区文件内容的新增修改删除都属于文件改动都会被对应git对象记录。这个也更加验证了git是版本控制器。接下来演示file2增加两行我们怎么查看当前仓库的状态呢git status可以查看工作区该文件在你上次提交之后发生的变化我们来看看信息文件没有被commit但是显示文件被改动了。那么我们能不能知道文件具体改的是什么地方我们直接查看不就行了吗问题是如果整个文件数据庞大改的时间还久远那不就完蛋了吗。我们可以使用git diff——用于查看工作区和版本库的区别从而知道改动解释信息a/file2工作区文件b/file2暂存区内容 -1 1,3 意思是从第1行之后开始到第3行都是新信息。下面的绿色内容就是新增内容。那么add和commit之后呢add和commit之后就没有Changes not staged for commit这条要求提交的信息了。操作3版本回退之前我们也提到过Git 能够管理文件的历史版本这也是版本控制器重要的能力。如果有一天你发现之前的工作出现了很大的问题需要在某个特定的历史版本重新开始这个时候就需要版本回退的功能了。 执行 git reset 命令用于回退版本可以指定退回某一次提交的版本。要解释一下“回退”本质是要将版本库中的内容进行回退工作区或暂存区是否回退由命令参数决定git reset 命令语法格式为git reset [--soft | --mixed | --hard] [HEAD]--mixed为默认选项使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容工作区文件保持不变。--soft参数对于工作区和暂存区的内容都不变只是将版本库回退到某个指定版本。--hard参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令因为工作区会回滚你没有提交的代码就再也找不回了所以使用该参数前一定要慎重。- HEAD 说明 - 可直接写成 commit id表示指定退回的版本- HEAD 表示当前版本- HEAD^ 上一个版本- HEAD^^ 上上一个版本 - 以此类推...- 可以使用 ~数字表示- HEAD~0 表示当前版本- HEAD~1 上一个版本- HEAD~2 上上一个版本 - 以此类推...图示说明演示先用git log查看commit历史版本使用reset回退我们可以看到file2没了因为我commit信息写错了file2是被我删除了再看看git log只剩下两个了如果我们想要后悔怎么办git reflog会显示前面版本commit id和变更方向这样我们就可以拿到相关id这里的id是原来id的一部分但是也能用来进行回退回退成功。为什么回退速度会那么快呢答案是所谓的回退就是HEAD指向的master的指针指向的commit id改变改为指向其它commit id也就是reflog能够找回的原因。这个告诉我们:写commit提交信息十分重要因为这个才是我们辨别的唯一依靠。除非有狠人直接背id但是时间太长并且版本太多的版本找回还是十分困难。操作4撤销修改其实就是前面版本回退的实践。目的是什么在代码放到远程之前进行改正防止影响使用。方法表我们就讲一下git checkoutgit checkout将文件会到最近一次的add或者commit状态注意格式空格和横杠数量git checkout -- 文件名撤销结果操作5删除文件前面我们已经说过在工作区文件的改动会被记录。那么删除文件也是那一套流程先工作区rm然后addcommit就行了。再用status看看工作区状态。git简化流程命令——git rm将工作区rm和add结合一起使用然后commit就OK了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价