有一个文件内容如下:
$ cat README.md
the first ...
the second ...
the third ...
- 文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态.
1.删除最后一行内容:`the third ...`
$ vi README.md
$ cat README.md
the first ...
the second ...
2.执行命令`git status`
$ git status
On branch dev
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
no changes added to commit (use "git add" and/or "git commit -a")
3.通过上面结果,可以发现,Git会告诉我们,git checkout -- file可以丢弃工作区的修改
$ git checkout -- README.md
4.执行命令`README.md`查看恢复后文件内容
$ cat README.md
the first ...
the second ...
the third ...
- 文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态.
1.删除最后一行内容:`the third ...`
$ vi README.md
$ cat README.md
the first ...
the second ...
2.执行命令`git add`添加到缓存区
$ git add README.md
3.执行命令`git status`
$ git status
On branch dev
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: README.md
4.执行命令`git reset HEAD README.md`
$ git reset HEAD README.md
Unstaged changes after reset:
M README.md
5.执行命令`git status`
$ git status
On branch dev
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
no changes added to commit (use "git add" and/or "git commit -a")
6.通过上面结果,可以发现,Git会告诉我们,git checkout -- file可以丢弃工作区的修改
$ git checkout -- README.md
7.执行命令`cat README.md`查看恢复后文件内容
$ cat README.md
the first ...
the second ...
the third ...
总结:
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令.