一、git 还原文件
以提问中修改了两个文件a、b为例,假设需要撤销文件a的修改,则修改后的两个文件:
1、如果没有被 git add 到索引区 git checkout a 便可撤销对文件a的修改
2、如果被 git add 到索引区,但没有做 git commit 提交
- 使用
git reset将a从索引区移除(但会保留在工作区)git reset HEAD a - 撤销工作区中文件a的修改
git checkout a
3、如果已被提交,则需要先回退当前提交到工作区,然后撤销文件a的修改
- 回退当前提交到工作区
git reset HEAD^ - 撤销工作区中文件a的修改
git checkout a
补充:灵活使用以上操作的关键在于理解git中工作区、索引区的概念和 git reset 命令hard、mixed(default)、soft三种模式的区别,网上有很多这方面的文章,不再赘述。
二、git 删除所有已放入暂存区文件
$ git rm -r -f --cached .
三、git 查看漂亮的log结构图
$ git log --all --decorate --oneline --graph