撤销操作
如果你的文件只是在工作区修改了,还没有提交到暂存区
git checkout -- 文件名
如果你的文件在工作区做了修改,并且也执行了 git add
提交到了暂存区,这个时候执行git checkout -- 文件名
,已经是无效的了,因为暂存区和工作区是一样的,再怎么覆盖内容也一样,这个时候应该使用
git reset HEAD
让 HEAD 覆盖暂存区,因为此时的HEAD 里面的内容还是上次提交的HEAD 的内容
git reset HEAD 文件a //只将文件a 从暂存区取消
git reset HEAD //将所有文件都从暂存区取消
git checkout HEAD
git checkout HEAD
是git checkout --文件
和git reset HEAD
的合体,直接用它覆盖工作区和暂存区
版本回退以及切换
git reset -hard HEAD^ //一个^ 代表上一个版本,两个^代表上上个版,
git reset -hard HEAD ~100 // 上一百个版本
git log --oneline //查看版本
如果你回退版本有后悔了,想要继续回到那个版本
git reset -hard 版本号
git reflog //查看最后一次的提交的版本号,就是刚刚回退回来,想要恢复的版本号
删除和意外删除的恢复
删除
git rm //回同时删除工作区和暂存区的内容,谨慎处理
意外删除的恢复
第一种情况:还未执行 git commit
提交到head
的时候,直接使用 git checkout head
文件名 就能恢复
第二种情况:执行 git commit
提交到head
的时候,就只能使git reset hard --HEAD^
回退到上一个版本