

## 一、Commit回退

### 1.1 从一次commit回退到某一次commit

#### 1.1.1 查看历史提交记录

```shell
# git 查看历史commit
git log
```

#### 1.1.2 复制上一次提交的commit码

<img src="./Image/Git-Commit-History.png" style="zoom:50%;" />

#### 1.1.3、输入回退命令

```shell
 git revert your_commit_code
```

### 1.2 强制回到某一次提交

​		在部分时候，由于版本冲突的问题，1.1 中提到的方法报冲突错误，这个时候实在没有办法可以使用`git reset --hard`命令。其步骤如下所示。值得注意的是，由于这个命令会重写历史，所以需要跟仓库的协作者进行沟通。

```shell
# 先找到要回去的commit的commit号
git log
# 回到某一次提交
git reset --hard your_commit_code
# 强制推送，这是因为本地修改后提交上去会重新覆盖之前的历史，如果不force会报冲突错误。
git push -f origin your_branch
```

## 二、放弃所有文件修改 （未Commit）

**2.1 解决方法**（两种解决方法）

```shell
# 方法1
git add .
git reset --hard "commit_code"

# 方法2，实际测试
git stash
git stash drop #丢弃指定条目
```

**2.1 git stash 命令**

别急，Git提供了一个**git stash命令**恰好可以完美解决该问题, 其将当前未提交的修改(即，工作区的修改和暂存区的修改)先暂时储藏起来，这样工作区干净了后，就可以切换切换到master分支下拉一个fix分支。在完成线上bug的修复工作后，重新切换到dev分支下通过**git stash pop**命令将之前储藏的修改取出来，继续进行新功能的开发工作