在 Git 中,可以通過以下幾種方式切換到之前的提交,同時保留當前的修改
1. 使用 git checkout 創建臨時分離頭指針(推薦用于查看代碼)
git checkout <commit-hash>
這會讓你進入"分離頭指針"狀態,你可以查看舊代碼。要返回最新提交:
git checkout <原來的分支名># 返回上一次分支,類似bash的cd -
git checkout -
2. 使用 git branch 創建新分支(最安全)
git branch temp-branch <commit-hash> # 創建臨時分支指向舊提交
git checkout temp-branch # 切換到臨時分支
這樣你的原分支和新提交都完好保存,可以在臨時分支上操作。
3. 使用 git stash 暫存當前修改(修改未提交)
git stash # 保存當前工作
git checkout <commit-hash> # 切換到舊提交
# 查看或操作后...
git checkout - # 回到原分支
git stash pop # 恢復暫存的修改
4. 使用 git reset --soft(可逆操作)
如果想在當前分支"回退"到舊提交但保留所有更改在暫存區:
git reset --soft <commit-hash>
之后可以用 git reset ORIG_HEAD
撤銷這次回退。
注意事項:
- 所有方法都不會丟棄提交,只要提交還在 reflog 中(默認保留90天)
- 要永久丟棄提交需要使用
git reset --hard
或git push -f
(慎用) - 推薦優先使用創建新分支的方式,這是最安全的選擇
可以通過 git reflog
查看所有歷史操作記錄,找回"丟失"的提交。