本文记录一下Git的撤销命令,内容包括修改Git最后一次commit的内容,取消加入暂存区的文件,取消对当前目录下文件的修改,reset命令的3种模式(mixed,soft,hard)以及回退某个文件。
文章目录
修改最后一次commit的内容
文件修改后git add了,也git commit了,发现哪里错了或者是漏add了一个文件,可以先git add file后,再git commit –amend这样只会记录一次commit(相当于将两次commit合并成了一次commit)。
取消加入暂存区的文件
不小心用了git add .将所有文件加入了暂存区或者是add多了文件,可以使用git reset HEAD <file>将文件拉回到已修改但是未提交到暂存区的状态。(在add后,通过git status可以看到相应提示,教你如何撤销提交)
取消对当前目录下文件的修改
不小心将文件改崩了,或者发现文件根本没必要修改,可以用git checkout — <file>取消工作区的文件的修改。(同样的,在修改文件后,通过git status可以看到相应提示)
reset命令的3种模式
git reset –option <commitid>是回滚命令,option有三个参数可选:
1. git reset –mixed,这也是默认方式(即不带参数默认是这种),回退暂存区和版本库信息,工作区的源码不会变化,可以重新add,重新commit。
2. git reset –soft,回退版本库信息,暂存区和工作区都不会变化,如果还要提交,直接commit即可。
3. git reset –hard,彻底回退,3个区都回退到历史某个版本。
回滚某个文件
1. git log –pretty=oneline <file>可以查看某个文件的修改历史。
2. git show commit_id <file>可以查看对应某个commit时期file的内容。
3. git reset commit_id <file>可以将file回退到某个版本
4. 执行完第3步后提示:
Unstaged changes after reset: M README.md
执行git status,提示:
Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: README.md Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md
执行git checkout — <file>后,README.md成功回滚到指定版本。
相关文章