git 回滚/撤销 操作
2023-05-05 tech git 2 mins 2 图 857 字
git 有三种回滚场景:
- 工作区回滚(未
git add
) - 暂存区回滚(已
git add
未git commit
) - 版本库回滚(已
git commit
)
在这里都做个记录。
1. 工作区回滚
工作区就是尚未 git add
的内容、当前可见的目录和文件。例如:
回滚很简单:
git checkout -- [文件名] //撤销指定文件的修改
git checkout . //撤销所有文件改动
2. 暂存区回滚
暂存区就是已经 git add
进去,尚未 git commit
的内容。例如:
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的内容