最近正在学习git,想要透过把学到的东西写下来,来记录一下自己学到的东西,也方便以后回顾这些知识。
刚开始写这种类似技术性的文章,可能有很多地方写得不好,还请高手们不吝指教。
在修改档案的时候可能常常会有已经暂存、提交的档案,因为种种缘故,又要再重新拿回来修,又或者是推错档案等等,这时候就很需要git的回复功能。
只要档案有加入过commit,那档案都能被还原。
从暂存(stage)中取消
要取消暂存,需要使用git reset
的指令。
比如说,有一个A.html被我git add
到stage了,我想要将他退回,那我需要在终端机输入git reset -- <档案名称>
,这里的状况档案名称就是A.html,使用这个指令后,A.html就会从stage中被退回,回到「已修改,但尚未被git追蹤」的状态,可以用git status
查看状态。
如果要一次将所有stage的档案退回,可以用git reset .
。
捨弃变更
如果档案已经修改,但是后来发现还是以前好,想要捨弃变更时,可以使用git checkout -- <档案名称>
。使用这个指令就像游戏中读取上一个存档点,会将进度回复到上次储存的地方一样,档案会回复成上次commit的状态。
取消commit
如果已经将档案commit上去,但是后来想想还是回复上一个版本好了,那就可以使用git reset HEAD^
或git reset HEAD~1
,两个功能是一样的,都代表要将commit的版本回复到前一个版本。使用后,原本commit上去的版本会退回到工作资料夹待处理。此时,用git log
看提交纪录,也会发现这次的提交纪录不见了。
如果连退回的档案都不需要的话,那可以使用git reset HEAD^ --hard
,--hard
代表在还原过程中,要把档案捨弃。
如果要回复到上上个、上上上个...好几个版本以前的话,可以在HEAD
后面处理。例如说,要到上上个版本,输入git reset HEAD^^
,^^
就是两个版本以前的意思。或着也可以输入git reset HEAD~2
、git reset HEAD^2
,波浪符、^
后面的数字是要回复到几个版本以前的意思。