# 版本穿梭/版本回退
## 如果文件已经被`commit`,可以通过`git reset --hared HEAD`
### 1. 版本回退:
~~~
git reset --hard HEAD #回退到当前最高版本
git reset --hard HEAD^ #回退到上一版本,回退两个版本 用 ^^
~~~
### 2. 回退到指定版本
~~~
git reset --hard 版本号前七位或者版本号 # 回退到指定版本
~~~
## 如果文件没有被commit时
1. 回退到当前最高版本
~~~
git reset --hard HEAD
~~~
2. 检出当前分支的最高版本
~~~
git checkout 文件
#在git中 checkout可以做revert操作,也就是版本回退。
~~~
## 查看历史版本
~~~
git log #日志
git reflog #查看修改参考日志
~~~
### 3. 放弃文件修改
#### 1. 修改后未提交到暂存区
放弃指定文件/文件夹修改
~~~
$ git checkout -- filename
~~~
所有文件/文件夹:
~~~
git checkout .
~~~
#### 2. 已`git add`提交到了暂存区
单个文件/文件夹:
~~~
git reset HEAD filename
~~~
所有文件/文件夹:
~~~
git reset HEAD .
~~~
#### 3. 本地通过git add & git commit 之后,想要撤销此次commit
~~~
git reset commit_id
~~~
这个id是你想要回到的那个节点,可以通过git log查看,可以只选前6位
**// 撤销之后,你所做的已经commit的修改还在工作区!**
~~~
git reset --hard commit_id
~~~
这个id是你想要回到的那个节点,可以通过git log查看,可以只选前6位
**// 撤销之后,你所做的已经commit的修改将会清除,仍在工作区/暂存区的代码也将会清除!**
### 4. 放弃文件添加
#### 1. 本地新增了一堆文件(并没有git add到暂存区),想放弃修改。
单个文件/文件夹:
~~~
rm filename / rm dir -rf
~~~
所有文件/文件夹:
~~~
git clean -xdf
~~~
#### 2. 已`git add`提交到了暂存区
单个文件/文件夹:
~~~
git reset HEAD filename
~~~
所有文件/文件夹:
~~~
git reset HEAD .
~~~
#### 3. 本地通过git add & git commit 之后,想要撤销此次commit
~~~
git reset commit_id
~~~
这个id是你想要回到的那个节点,可以通过git log查看,可以只选前6位
**// 撤销之后,你所做的已经commit的修改还在工作区!**
~~~
git reset --hard commit_id
~~~
这个id是你想要回到的那个节点,可以通过git log查看,可以只选前6位
**// 撤销之后,你所做的已经commit的修改将会清除,仍在工作区/暂存区的代码也将会清除!**