1. 准备示例
假设我们有三次提交:
- test1:需要在
master
分支提交 - test2、test3:需要在
develop
分支提交
远端线上记录
2. 步骤
- 选择需要回退的记录:
- 选中需要回退的 commit,选择 Reset Current Branch to Here...。
- 选中需要回退的 commit,选择 Reset Current Branch to Here...。
- 选择回滚模式:
- 这里我们选择 Soft 模式。
- 这里我们选择 Soft 模式。
3. 各种回滚模式介绍
-
Mixed(默认):
- 功能:回退会保留 commit 前的修改信息 diff。
- 效果:清除暂存区,将暂存区中的文件或代码回到工作区。需要重新
git add
再 commit 推送。 - 注意:不会丢失文件或代码。
-
Soft(常用):
- 功能:回退会保留 commit 前的修改信息 diff。
- 效果:保留暂存区和工作区,新建文件回退不会变回红色。无需重新
git add
,可以直接 commit。 - 注意:同样不会丢失文件或代码。
-
Hard(慎用):
- 功能:彻底回退到某个版本。
- 效果:本地的代码会变为你回退版本的代码,所有未保存的修改都会丢失。
- 注意:使用时需谨慎,以免丢失重要数据。
-
Keep:
- 功能:回退时会保留工作区的修改。
- 效果:回退到指定的 commit,但暂存区会保持不变。如果有冲突,Git 会保留工作区的修改,方便后续处理。
- 注意:适合在需要保留当前工作区修改的情况下使用。
4. 总结
- Mixed:清除暂存区,保留工作区修改。
- Soft:保留暂存区和工作区修改。
- Hard:彻底回退,丢失所有未保存的修改。
- Keep:回退时保留工作区修改,适合处理冲突。
5. 推送到远端
- 点击完后,本地记录已经改变,线上记录还未改变。
- 需要强制推送到远端:
git push -u origin 分支名 -f
6. 切换到 develop
分支并提交代码
- 切换到
develop
分支,提交代码后,线上也成功更新。