git 回滚/撤销 操作

git 有三种回滚场景:

  • 工作区回滚(未 git add
  • 暂存区回滚(已 git addgit commit
  • 版本库回滚(已 git commit

在这里都做个记录。

1. 工作区回滚

工作区就是尚未 git add 的内容、当前可见的目录和文件。例如:

image-20230506午後05904150

回滚很简单:

git checkout -- [文件名] 			//撤销指定文件的修改

git checkout .                //撤销所有文件改动

2. 暂存区回滚

暂存区就是已经 git add进去,尚未 git commit 的内容。例如:

image-20230506午後10608132

git rm --cache [文件名] //撤销暂存区指定文件回到工作区

git reset -- [文件名]   //撤销暂存区指定文件回到工作区

git reset [HEAD]       // 撤销暂存区所有文件回到工作区,HEAD可以省略

3. 版本库回滚

版本库:就是.git中保存的版本仓库,也就是已经commit过的那些记录。

git log --pretty=oneline  // 查看最近几次commit的commit_id

可以用 git revert 或者 git reset 进行操作:

git revert HEAD           // 撤销最近的一个提交
git revert <commit_id>    // 撤销指定的版本,该操作将自动保存为一次commit

或:

git reset HEAD benchmarks.rb
git reset --soft xxx
git reset --hard xxx

两者主要区别是:

  • git revert是用一次新的commit来回滚之前的commit
  • git reset是直接删除指定的commit
  • git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容

参考资料


为 MacOS 随机定时设定 Bing 壁纸 在 Mac 上用 root 用户运行 wireshark