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
?分支,提交代碼后,線上也成功更新。