行业资讯 2025年08月6日
0 收藏 0 点赞 846 浏览 2075 个字
摘要 :

文章目录 git提交出错了怎么办? 众所周知,现在Git属于比较流行的版本控制工具,但是想要灵活用好git却并不是那么容易,我们需要对git的工作区域要有足够的了解才行。……




  • git提交出错了怎么办?

众所周知,现在Git属于比较流行的版本控制工具,但是想要灵活用好git却并不是那么容易,我们需要对git的工作区域要有足够的了解才行。

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
Git本地3个工作区域详解及如何回滚,还搞不懂git建议看看

Workspace:工作区,就是你平时存放项目代码的地方;

Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息,一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index);

Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换;

本地的三个区域确切的说应该是git仓库中HEAD指向的版本:
Git本地3个工作区域详解及如何回滚,还搞不懂git建议看看
Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。

WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。

.git:存放Git管理信息的目录,初始化仓库的时候自动创建。

Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。

Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。

git提交出错了怎么办?

我们在使用Git的过程中难免会遇到提交错误情况,今天我们来尝试一种更加优雅的方式,让代码回到提交以前的样子。

在正式讲述优雅的方式之前,我们先来看下一个文件的旅程,从本地到远程仓库需要经历哪些区域呢?

Git主要可以划分以下几个文件区域:工作区、暂存区、本地仓库、远程仓库

一开始我们在工作区创建修改文件,新来的小文件一般需要经历 git add,然后进入暂存区,这算是上了Git版本控制的贼船了,暂存区的文件想要进入本地仓库就需要 git commit,此时还需要提交一份文件说明。最后通过 git push把文件推送到远程仓库。

我们来一步一步的玩,首先是添加到暂存区还没有提交到本地仓库的文件该怎么撤回呢?这时候我们可以直接使用 git reset命令,此命令可以直接把所有添加到暂存区未提交的文件撤回到工作区。

接着是已经提交到本地仓库的文件,我们可以通过 git log查看提交日志的。这里我们常用的撤回可以分为下面两种,一是把文件撤回到暂存区,二是把文件撤回到工作区。

Git本地3个工作区域详解及如何回滚,还搞不懂git建议看看
1、文件撤回到暂存区 git reset --soft XXX(版本号)

比如我们把版本从c2撤回到c1版本,则可以使用此命令 git reset –soft c1,此时从c1版本到c2版本之间提交的所有文件都会被打到暂存区,但是并不会修改你本地的文件内容,你可以继续提交。

2、文件撤回到工作区 git reset --mixed XXX(版本号)

比如我们把版本从c2撤回到c1版本,则可以使用此命令 git reset –mixed c1,此时从c1版本到c2版本之间通过添加提交到本地仓库的文件都会回到工作区,已经在本地仓库,版本迭代期间修改内容的文件回到暂存区,但是并不会修改你本地的文件内容,你可以继续操作。
3、撤销所有提交 git reset --hard XXX(版本号)

这个命令可以说是硬核操作,不仅会撤销提交的操作,还会更改你本地文件,同样那c1和c2版本举例子,

  • 此操作会把c1到c2版本之间所有添加暂存区并提交到本地仓库的文件删除掉,
  • 版本更新期间修改内容的文件会把内容还原到c1版本,文件回到工作区。
  • 所有添加到暂存区未提交到本地仓库的文件会被删除
  • 未添加到暂存区的文件不受影响,因为他们还没有搭上Git版本控制的贼船
  • 此操作执行之后,回收站都找不到。

关于 git reset的命令还有 git reset --mergegit reset --keep等等。

那么提交到远程仓库的文件该怎么办呢? git reset只对本地的文件有作用,对远程仓库上就是无效的了。这时候就需要新的命令 git revert,这个可以理解成回退到某个版本,并且生成一个新的版本,此时并不会修改之前的提交信息。 git revert是版本的回退,但却是一次新的提交信息,将本地代码回退到指定版本,这时候你可以 git push把线上的代码更新一下。
Git本地3个工作区域详解及如何回滚,还搞不懂git建议看看
有时候使用 git reset --hard也可以达到更改远程仓库的目的,但是在多人操作的时候,你想要撤回某次提交,要留点痕迹,不然可能会出大问题。总之,提交容易,撤销的时候要多加注意了。

以上就是Git本地的3个工作区域详解,以及当我们遇到提交代码错误的时候该如何进行代码回滚建议搞不懂git的同学可以看看,自己有空再去实操下。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8648.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

986
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

463
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

347
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

455
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

516
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

831
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号