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

Git Rebase后新建文件丢失,如何找回代码?

找回Git Rebase中丢失的新文件

别慌,这种情况Git其实已经帮你把文件内容存在历史提交里了,咱们一步步把它找回来:

1. 定位包含丢失文件的提交

首先运行这个命令查看你的Git操作日志:

git reflog

你会看到类似这样的记录:

abc123 HEAD@{0}: rebase: checkout main
def456 HEAD@{1}: commit: Add new feature files

找到那个你确定还存在新文件的提交(比如上面的def456,就是你rebase前提交新文件的记录),复制它的哈希值。

2. 恢复丢失的文件

根据你的需求选下面的方法:

方法一:直接恢复单个/指定文件

如果你记得具体的文件名,直接用这个命令把文件从目标提交提取到工作区:

git checkout <提交哈希> -- <文件名>
# 例子:git checkout def456 -- MyNewViewController.swift

如果不确定文件名,可以先查看该提交下的所有文件:

git ls-tree --name-only -r <提交哈希>

找到你丢失的文件后,再用上面的checkout命令恢复。

方法二:临时分支批量恢复(适合多个文件)

如果丢失了多个文件,或者想先完整确认内容,建议创建一个临时分支:

# 基于目标提交创建临时分支
git branch temp-recovery <提交哈希>
# 切换到临时分支
git checkout temp-recovery

这时候你就能在工作区看到所有丢失的文件了,把它们复制到你原来的开发分支(比如git checkout main切回去,再把文件复制过来),确认没问题后可以删除临时分支:

git branch -d temp-recovery

方法三:用git restore(Git 2.23及以上版本)

如果你用的是较新的Git版本,也可以用更清晰的git restore命令:

git restore --source=<提交哈希> <文件名>
# 例子:git restore --source=def456 MyNewModel.swift

3. 后续处理

文件恢复后,记得把它们重新加入Git追踪(因为之前的删除操作可能让它们变成未追踪状态):

git add <恢复的文件名>

之后你可以继续处理rebase的冲突,或者提交这些恢复的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:46:21