git 撤销相关操作

每次使用 git 需要进行版本回退相关的操作都要在搜索引擎重新查询相关命令,很是费时间,今天有空总结一下,算是记笔记方便以后使用。

撤销本地当前所有修改

git reset --hard

如果本地文件修改得一团乱,但是还没有 commit,可以通过这个命令恢复到上次 commit 的状态。

丢弃 commit

git reset --hard commitID

将代码恢复到指定的 commitID 处。如果不指定 –hard 参数,那么不会改变工作区的文件。(一般使用都会带上该参数)

撤销 commit

git revert HEAD

commit 代码以后,你突然意识到这个 commit 有问题,应该撤销掉,这时执行该命令就可以了。该命令会新生成一个 commit 提交记录,并不改变其他内容,在 log 中可查看到撤销记录。基本属于撤销操作的首先方案。

该命令还有两个常用参数

  • –no-edit:执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息。
  • –no-commit:只抵消暂存区和工作区的文件变化,不产生新的提交。

撤销 add 操作

git reset HEAD [filename]

可选参数

filename 指定撤销的文件。(不使用该参数表示所有已经 add 了的文件全部取消 add 状态)

替换上一次 commit

git commit --amend -m "new Message"

如果我们在 commit 之后发现信息写错了,这是可以使用该命令修改信息。

这时如果暂存区有发生变化的文件(也就是有文件被 add 了),会一起提交到仓库。所以,–amend不仅可以修改提交信息,还可以整个把上一次提交替换掉。

暂时将未提交的变化移除,稍后再移入

$ git stash
$ git stash pop

如果我们在修改了一些文件后发现不应该在这个分支上操作,那么我们可以使用 git stash 将当前工作区的文件保存一下,然后切换的新分支,执行 git stash pop 将保存的内容恢复到新分支。

时光机

git reflog

只要HEAD发生了变化, 就会在reflog里面看得到。

配合 git reset 命令可以将代码切换到任意状态。

取消已经 push 的行为(强制 PUSH)

# 查询 git 所有变化日志
git reflog 

# 本地仓库回退到某一版本
git reset -hard xxxx

# 强制 PUSH,此时远程分支已经恢复成指定的 commit 了
git push origin master --force

程序员的艺术人生


文章作者: chenggx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chenggx !
评论
 上一篇
laravel 视图数据共享 laravel 视图数据共享
在我们做网站的时候有些数据是每个视图页面都需要的(导航、侧边栏等内容),但如果我们在每个视图的控制器里面都写向视图传递数据的操作则会显得代码比较冗余。那么在 laravel 中我们一般可以使用 viewShare 和 viewCompose
2020-09-13
下一篇 
docker 学习笔记(十) docker 学习笔记(十)
Swarm 是 Docker 引擎内置(原生)的集群管理和编排工具 学习 swarm 一定要理解的几个重要概念 节点 服务 任务 节点一台物理或云主机加入 docker 集群,那么这台主机就是一个节点。 节点分为管理 (manage
2020-09-06
  目录