当前位置:   article > 正文

git远程代码回滚_git代码回滚的几种方式

git代码远程回滚

这还是第一次写关于git的文章,让我不由的想起了大学那会还没有接触到git时的如噩梦般的版本控制。

每次如果代码要有大的改动都要提前copy一份出来,最后以至于有多少次大的改动就有多少分文件,而且每一个都不敢删,写到这好想配个图,虽然我不造配哪个图合适啊,反正就是类似于1,2,3,4,5...。

言归正传,我们要说的是后悔药。

在工作中我们一定都发生过这种情况,希望把代码会滚到某个节点中,git有多中代码的回滚方式,这里做一个总结。

首先我们到区分几个概念,工作区,暂存区,版本库,。

工作区

所谓工作区,即我们电脑中所看到的目录。

版本库

在工作区有一个隐藏目录.git,这是Git的版本库。

暂存区

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

下图显示了三者之间的关系,这是我们了解git的基础

图中左侧为工作区,右侧为版本库。在版本库中左侧区域是暂存区(stage),右侧标记为 "master / other" 的是 master 分支或其他分支所代表的目录树。

当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新。

当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

而我们这里所谓的后悔药就是要讲代码会滚到某个提交历史的方法,下面就针对各种不同情况一一讲解。

丢弃尚未被提交到暂存区的代码

1.git co -- file

其中 “--” 参数是必须的,否则就会变成切换分支。

2.git stash 储藏

git stash操作适用于,当你的工作进行到一半,此时还不想要提交,但是又必须切换到其他分支工作的时候。

执行命令

git stash

stash 命令就会将你此时工作区的代码存起来,待你想继续工作时,执行

git stash apply

你就可以重新应用你最后一次stash的内容了。此时的代码就回到了你上次到一半的内容上了。

已经提交到暂存区

1.git reset

git reset HEAD~1

暂存区的目录树会被重写,最后一次提交的内容会被丢弃,但是工作区不受影响。

但是加上 “--hard” 参数后,暂存区和工作目录都同步到你指定的提交。也就是HEAD~1.

git reset --hard HEAD~1

2.git rm --cached file

改命令会直接从暂存区删除文件,工作区则不做出改变。

已经提交到分支上的代码

1.git checkout HEAD . / git checkout HEAD file

当执行该命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件,替换暂存区和以及工作区中的文件。这个命令是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

2.git reset --hard

其使用方法与上面讲的git reset一样,都是改变了暂存区的HEAD索引。

已经提交到远程的代码

1.git revert

git revert HEAD 撤销前一次 commit

git revert HEAD^ 撤销前前一次 commit

git revert fa042ce57 撤销指定的版本,撤销也会作为一次提交进行保存。

与reset不同的是:

revert不会舍弃原来的提交记录,而是生成了一次新的提交。

reset是撤回到某个指定的版本,而revert则是将某个指定的版本撤销,也就是撤回到指定版本之前的一个版本上。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/771712
推荐阅读
相关标签
  

闽ICP备14008679号