• 欢迎光临flyzy小站!分享一些学习路上遇到的坑坑洼洼~

adad

Git撤销命令详解

本文记录一下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成功回滚到指定版本。

点赞