You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git提交至新备份分支后如何恢复原分支暂存与未暂存状态

结论

所有文件改动可以100%完整恢复,不会有任何内容丢失。但你在备份分支执行git add .时覆盖了原有暂存区状态,且操作前没有将暂存区状态写入Git的持久存储,因此暂存/未暂存的文件分区无法自动还原,手动重新标记暂存文件即可,操作成本极低。

操作步骤
  1. 先切回b1分支,确认当前工作区无遗留未提交内容:
git checkout b1
git status

如果输出存在未提交的无关改动,先自行清理,避免后续覆盖文件。

  1. 把backup-changes分支里备份的所有改动恢复到b1的工作区,不修改暂存区、不生成新提交:
git restore --source=backup-changes --worktree .

如果你的Git版本较老不支持git restore命令,可以用等效命令替代:

git diff b1 backup-changes | git apply

执行完这步后跑git status就能看到,你之前所有的改动都回到了工作区,文件内容和备份前完全一致,只是默认全部是未暂存状态。

  1. 手动恢复暂存标记:回忆你之前已经执行过git add的文件,对这些文件重新执行暂存操作即可:
git add 你之前暂存过的文件1 你之前暂存过的文件2

如果你当时跑git status的终端记录还没清,直接对照当时输出的暂存文件列表add就行,不需要靠记忆。全部操作完再跑一次git status核对,状态就和你创建备份分支前完全一致。

原理说明

你从b1执行git checkout -b backup-changes时,新分支和b1指向同一个提交节点,当时确实完整保留了暂存区和工作区状态。但后续你执行git add .把所有未暂存改动都写入了暂存区,直接覆盖了原暂存区的内容——Git只会永久记录提交到版本库的内容,不会自动保存暂存区的历史版本,因此原暂存和未暂存的边界没有被持久化存储。但所有改动的内容都已经被提交到backup-changes分支,所以文件内容不会有任何丢失。

内容的提问来源于stack exchange,提问作者Khanna111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 23:51:35