一、git reset 参数
-
–soft
仅仅移动当前Head指针,不会改变工作区和暂存区的内容
-
–mixed
是reset的默认参数,移动head指针,改变暂存区内容,但不会改变工作区
-
–hard
当前head指针、工作区和暂存区内容全部改变
二、 如何回滚文件
- 修改完,还未执行git add
git checkout .
使用暂存区的文件覆盖工作区,所以执行完git add .之后,再执行该命令是无效的
git checkout .和git add .是一对反义词
2.使用git add 提交到暂存区,还未commit之前
git reset //先用Head指针覆盖当前的暂存区内容
git checkout . //再用暂存区内容覆盖工作区内容
或者使用
git reset --hard //直接使用head覆盖当前暂存区和工作区 --hard表示强制覆盖 慎用!!!
3.已经git commit,还未git push
git reset --hard origin/master
从远程仓库把代码取回来,然后覆盖本地仓库、本地暂存区和工作区
或者使用
git reset last_commit_id
覆盖本地仓库、暂存区和工作区,其中查看last_commit_id命令为
git log
覆盖本地的暂存区,再执行
git checkout .
4.已经git push
那就无力回天啦
如果git reset 到某一个版本,那么如何回到之前的版本呢?
这个时候git log 只能看到当前版本以及之前的历史,也就说看不到reset之前的那个历史了
那就需要用到git reflog 该命令用来查看所有分支的操作记录 找到reset之前的commitid 开开心心的reset回去就好啦