Git中撤销修改的场景
git中有四个区间来分隔修改记录(注意git存储的修改记录,并不是文件):
工作区——暂存区(git add 但是未commit的部分)——仓库(已经git commit 的部分)——远程仓库(已经git push的部分)
1、撤销工作区内容
当工作区修改需要撤销时:
a、如果是新增文件,仓库中没有版本记录,即untracked file;
使用git clean -f 清除;
1 git clean -f
b、如果是已经在版本库中存在的文件,使用checkout来检出仓库中版本到工作区
1 git checkout filename
2、撤销暂存区内容
如果已经使用git add 添加到了暂存区,使用reset撤销暂存区
1 git reset HEAD filename
3、回退到仓库中上一个版本的提交
已经提交到仓库的版本也是使用reset来回退,和暂存区的区别就是加了一个--hard参数
1 # 回退到上一个版本 2 git reset --hard HEAD^ 3 # 回退到上上个版本 4 git reset --hard HEAD^^ 5 # 回退到上100个版本 6 git reset --hard HEAD~100
4、回退到仓库中指定版本的提交
使用指定的commit_id回退到指定版本
1 git reset --hard 777b7eb
还可以使用revert进行回退:
1 # 还原到上一个版本 2 git revert HEAD 3 # 还原到某个特定的版本 4 git revert commit_id
注意:revert和reset的区别在于:revert会生成一个新的commit版本,而reset不会生成新的commit