当前位置:   article > 正文

Git 常用回滚撤销命令总结_phpstorm git rollback是什么命令

phpstorm git rollback是什么命令

Git 一个开源的分布式版本控制系统,最常用于代码开发过程中版本控制

这里简单总结记录一下git常用命令,最主要是由于某些原因提交错误要进行回滚撤销操作。

Git 相关概念

1 工作区

你电脑上的本地目录,该目录中存放着将要或者已经被Git所管理的项目文件

2 暂存区

英文叫 stageindex。一般存放在工作区 .git 目录下的 index 二进制文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

3 本地版本库

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

4 远程版本库

一般服务器上(如:Github或者自己搭建的Gitlab)会存在一个项目文件的版本库,服务器上的版本库就叫远程版本库。

 git pull 命令
从远程的版本库clone 拉取文件到本地版本库

 git push 命令
从本地版本库推送更新的文件到远程版本库,达到本地和远程文件一致
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

5 HEAD 和 origin

一般采用 git log 命令查看如下内容:
在这里插入图片描述
这里面的 HEAD origin是什么意思?

HEAD

可以将 HEAD 看做当前工作区文件所属的是哪一个分支

origin

指的就是远程仓库

上面图中 git log 后的第一条信息:

commit a3bc6e672da90112565e76b50474e2b09ab99a99 (HEAD -> master, origin/master, origin/HEAD)
  • 1

表示 当前本地电脑上的文件归属 master 分支(HEAD -> master), 本次commit后也推送到了远程master上

版本回滚撤销

场景1 工作区文件还没有add到暂存区

使用 git status 查看当前工作区状态
在这里插入图片描述

$ git checkout -- aaa.txt  # 丢弃文件 aaa.txt的修改

$ git checkout -- .        # 丢弃全部没有提交的文件的修改
  • 1
  • 2
  • 3

注意:
该命令将丢弃文件的全部修改,回到和远程服务器上版本一致

场景2 已经add到暂存区但没有commit

在这里插入图片描述

$ git reset HEAD  aaa.txt    # 取消暂存,将文件重置回场景1

$ git reset HEAD .          #  取消刚刚add的所有文件的暂存,将文件重置回场景1
  • 1
  • 2
  • 3

该命令不会丢弃文件的修改,如果你还想丢弃这两个文件的全部修改,参考 场景1的方法

场景3 已经commit到本地仓库但没有push到远程仓库

在这里插入图片描述
使用 git log 命令可以发现,当前本地版本库的版本要高于远程版本,也就是说已经commit了但没有push,此时可以采用下面的命令回滚本地仓库。

$ git reset --hard <commit_id>  # 回到其中你想要的某个版
  • 1

<commit_id> 可以使用 git log 命令查看每一次提交的信息

注意:例如上图,commit_id 应该是 “测试提交1”的commitId

场景3 已经push到远程仓库

$ git reset --hard <commit_id>  # 回到其中你想要的某个版

$ git push origin HEAD --force # 强制提交远程 此时本地远程仓库版本一致,一并回退到  <commit_id>

  • 1
  • 2
  • 3
  • 4

git reflog

针对场景3 :

如果此时又返回刚刚的回退版本操作,想还是恢复刚刚的操作怎么办?
采用 git reflog 查看所有的git操作命令日志
在这里插入图片描述
看到 HEAD@{0} HEAD@{1} HEAD@{2} HEAD@{3} … 了吗,

当前版本是 HEAD@{0},其实之前 HEAD@{1}是最新的版本的,我们想**前滚**到 HEAD@{1}这个commit_id 上怎么做?

还是和场景3的做法一致!

$ git reset --hard c45051284d211114cdce1499e635bc8252e0bbba  # 强制前滚到 "测试提交2" 那一次提交操作

$ git push origin HEAD --force # 强制提交远程 此时本地远程仓库版本一致,一并恢复到  <commit_id>

  • 1
  • 2
  • 3
  • 4

场景4 已经push到远程仓库,但只想撤销某一次的提交

例如下面的情况,我想撤销 “测试提交3” 这一次的全部文件修改,怎么弄?
在这里插入图片描述

采用 git revert 命令进行撤销提交操作

通过revert命令反做一个版本的提交,git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。

git revert -n c45051284d211114cdce1499e635bc8252e0bbba   # 撤销 “测试提交3” 那一次的提交,不影响“测试提交4”的提交 ,-n 是--no-commit 如果不带这个参数会自动提交一条commit

  • 1
  • 2

git revert 之后,反做的操作已经add到了暂存区,可以进行本地文件修改操作,然后再次做commit操作和push操作。


THANKS OVER .

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

闽ICP备14008679号