# 版本穿梭/版本回退
## 如果文件已經被`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的修改將會清除,仍在工作區/暫存區的代碼也將會清除!**