git 撤销上次 push 的版本

  1. 可以用git log查看你要回到的那个版本,是一个字母加数字的标识;

  2. 然后使用git reset命令回退版本,如下所示,回退到上一个版本,分为--hard--soft--mixed三种情况

注:

  1. add之前若想回退,则输入git checkout -- <文件路径 或 . >
  2. 而add之后,则输入即可git reset HEAD <文件路径 或 . >回退;
    具体可以点击https://learngitbranching.js.org/?locale=zh_CN,先模拟练习一下。
1
2
3
git reset --hard HEAD^ #回退到上个版本,撤销commit,也撤销add,不保存当前修改的代码,慎用!!!
git reset --soft HEAD^ #回退到上个版本,即撤销commit,不撤销add,且保存当前已修改的代码
git reset --mixed HEAD^ #回退到上个版本,撤销commit,也撤销add,且保存当前已修改的代码

以下命令等价:

1
2
3
4
git reset <参数,例如--soft> HEAD^

# 等价于下面命令
git reset <参数,例如--soft> HEAD~

若要回退两个版本可以这么写:

1
git reset <参数,例如--soft> HEAD~2
  1. 最后将本地的修改提交到远程
1
git push origin HEAD --force
  1. 当你回滚之后,又后悔了,想恢复到新的版本怎么办? 使用git relog命令查看已被删除的commit的记录。

git log不能查看已经删除了的commit记录。

1
2
3
4
5
6
git relog

# 输出结果如下
b7057a9 HEAD@{0}: reset: moving to b7057a9
98abc5a HEAD@{1}: commit: more stuff added to foo
b7057a9 HEAD@{2}: commit (initial): initial commit

若此时我们想要找回上面第二个commit, 则输入git reset --hard 98abc5a

  1. 然后此时输入git log看一下恢复的记录:
1
2
3
4
5
git log

# 输出结果如下
98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit

至此,代码就回滚到我们想要的提交状态了。

修改pull为rebase模式

以下命令执行完之后pull就会是rebase模式,而不是merge模式了,不会产生额外的log。

1
git config --global pull.rebase true

运行结果如下图:

仅修改commit注释不回退

1
git commit --amend

忽略vue.config.js配置文件的修改

1
git update-index --assume-unchanged vue.config.js