Git 实战-撤销、恢复

作者:vkvi 来源:ITPOW(原创) 日期:2019-11-30

撤销

已经提交到暂存区了,想撤销提交

也就是说不想提交了,其他该咋样还是咋样,仅仅是不想提交到暂存区,即撤销 add

git reset HEAD^
git reset HEAD^^
git reset HEAD~100
git reset HEAD <file>

如上,分别表示:

  • 撤销前 1 次提交。

  • 撤销前 2 次提交。

  • 撤销前 100 次提交。

  • 撤销 xxx 文件的提交。

已经提交到本地仓库了,想撤销提交

也就是说不想提交了,其他该咋样还是咋样,仅仅是不想提交到本地仓库,即撤销 commit

git reset --soft HEAD^
git reset --soft HEAD^^
git reset --soft HEAD~100
git reset --soft HEAD <file>


get reset --hard HEAD

顺道谈谈 --hard:

不加参数是撤销暂存区

加 --soft 是撤销本地仓库

--hard 是撤销暂存区本地仓库工作区,通常是搞得乱七八糟之后,哎呀,重来重来,通通重来,注意:这是通通撤销,和下面的从本地仓库恢复至工作区,是两个概念

恢复

工作区文件遭整出问题了,想从本地仓库恢复

git checkout -- itpow.txt

如上通过 git checkout(中文翻译:检出)将 itpow.txt 从本地仓库提取到工作区。注意两个横线后面有个空格,因为文件名不是 git 命令的参数,同时不要省略 --,因为一省略就变成切换分支了。

有人可能会问,为什么不用 git pull 从服务器拉下来恢复呢?

git pull 的第一步是从服务器远程仓库拉至本地仓库,如果二者版本一样,它就退出了,就不存在后面一步从本地仓库提取到工作区了。

当然如果我们觉得本地仓库版本比较旧,可以从服务器拉。

如果文件已经暂存至暂存区

git checkout -- <file> 之前应该先执行 git reset HEAD <file>,完整如下:

git reset HEAD itpow.txt
git checkout -- itpow.txt

也就是说,我们应该先撤销暂存区,再恢复,这样:工作区暂存区本地仓库,才是匹配的。

相关文章