在开发过程中的任何一个阶段,都可能会有撤消某些操作需要。对已经执行git add
命令添加至暂存区的文件,我可能会需要将其中某个文件移除暂存区。对修改过的文件,可能需要撤消修改,将其恢复成上次提交时样子。这些情况下,我都需要将操作撤消。使用Git
进行撤消操作时应该注意,有些撤消操作是不可逆的,使用不当会造成数据的丢失。
1. 暂存区文件的撤消
git reset HEAD...
git reset HEAD
命令可以取消文件暂存。
例如,现有file1
、file2
两个文件,已经执行git add *
将它们添加到了暂存区。现在只需要提交file1
,所以婪将file2
移出暂存区。执行命令如下:
git reset HEAD file2
执行完命令后,可以通过git status
命令查看文件状态。git status
除可以查看文件状态外,还有对文件操作的提示信息。在本例中提示如下:
$ git status On branch master Your branch and 'origin/master' have diverged, and have 1 and 1 different commit each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: (use "git reset HEAD..." to unstage) // 可以执行git reset HEAD 命令将文件移出暂存区 modified: demo/file1 Changes not staged for commit: (use "git add ..." to update what will be committed) // 可以执行git add 命令将文件添加到暂存区 (use "git checkout -- ..." to discard changes in working directory) //可以执行git checkout命令撤消文件操作 modified: demo/xxx.txt
2. 撤消文件修改
git checkout --...
git checkout
命令可以方便的撤消文件修改,将其还原成上次提交的状态。
例如,我们不再需要修改file2
文件,执行如下命名撤消修改:
git checkout -- file2
注意:git checkout --
命令会导致对文件所做的所有修改都消失且不能恢复,在执行命令前应充分确认对文件的修改已不再需要。