forked from logzhan/NotesUESTC
53 lines
1.6 KiB
Markdown
53 lines
1.6 KiB
Markdown
|
|
|||
|
|
|||
|
## 一、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**命令将之前储藏的修改取出来,继续进行新功能的开发工作
|