NotesUESTC/代码同步协作(Git)/Git高级操作-回退.md

53 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## 一、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**命令将之前储藏的修改取出来,继续进行新功能的开发工作