1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Git学习:各阶段回退方法

Git学习:各阶段回退方法

时间:2020-05-03 14:55:06

相关推荐

Git学习:各阶段回退方法

文章目录

一、问题背景二、解决方式1. 回退情况1:文件在工作区进行回退2. 回退情况2:文件在暂存区进行回退3. 回退情况3:文件在本地仓库进行回退4. 回退情况4:文件已经在远程仓库中

一、问题背景

Git 是分布式的软件管理系统。在把一份代码完成之后发送到 “远程仓库”,可能中间还经历了不同的 “提交阶段”。 本文介绍的是在不同阶段下对应的回退方法

二、解决方式

在Git中,一份代码可能处于不同的提交阶段。

一份新修改(或者创建的)文件处于 –工作区

git add之后, 文件会从工作区移动到暂存区

git commit之后, 文件会从暂存区移动到本地仓库

git push之后,文件会从本地仓库移动到远程仓库

关系如图:

(图片来自 菜鸟教程)

1. 回退情况1:文件在工作区进行回退

这里指的是文件没有经过任何提交,仅仅只是保存。但是保存完之后发现需要回退一下代码。

此时可以使用git checkout -- filename进行回退。(危险动作,三思

2. 回退情况2:文件在暂存区进行回退

这里指的是文件经过git add指令之后进入了暂存区。

此时可以使用git reset HEAD指令将暂存区的文件回退到修改之前的状态。(危险动作,三思

3. 回退情况3:文件在本地仓库进行回退

例如情况如下:

这里指的是文件经过git commit指令之后进入了本地仓库。

此时可以使用git log查看本次提交之前的版本,并记住想要回退的版本的id。

然使用git reset --hard commit_id (这里是 8c12)指令将暂存区的文件回退到修改之前的状态。

4. 回退情况4:文件已经在远程仓库中

这里指的是文件经过git push指令之后进入了远程仓库。

一种补救的方法就是修改错误的版本,push一个新的上去就行。

另一种和3类似,通过git reset --hard commit_id回退本地版本,然后把旧的版本重新push上去。然而,此时的问题就是此时本地的版本落后于远程的版本。因此直接再使用git push的话是失败的:

此时可以加上-f来强制推:git push - f

这样就可以了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。