意外从Git仓库中移除

3
当从Git仓库中删除文件时,我不小心也删除了一个有未提交更改的文件。撤销删除导致该文件返回,但是未提交的更改消失了。有没有办法恢复文件的未提交状态?
以下是jmort253的建议步骤:
1. 修改文件(之前已经提交和推送到git中)。 2. 使用SourceTree意外删除了一些文件,包括上述提到的文件。 3. 推送到远程仓库。 4. 意识到错误后回滚提交(使用SourceTree)。 5. 文件现在已经回来,但缺少步骤1中所做的更改。
希望这能帮到您。

你应该描述一下你不小心删除文件的步骤;否则,人们只能猜测你做了什么,这可能对你没有帮助。使用此[编辑]链接更新你的问题。祝你好运! - jamesmortensen
我接受了所有都已经丢失这个事实。好处是重写产生了更好的代码...想想看。 - manuman
有趣的是,我曾经和你一样。有时候删除你的代码确实会有好的结果。 :) 很高兴这次能够成功! - jamesmortensen
2个回答

2
简而言之:不行。 未提交的文件几乎可以定义为版本控制系统完全不知道的文件,因此版本控制系统将无法像你在磁盘上删除随机文件(例如从未在存储库的文件层次结构中的文件)时一样帮助你。
这意味着,除非你在先前存储库状态中有一个 stash 包含未提交的更改?(git stash list应该会给你一个想法)
如果没有,您应该转向适合您操作系统和文件系统的文件恢复方法。

1
你应该尝试查看 reflog,具体操作如下:

git rev-list --all --oneline mylostfile.txt

用你的实际文件路径替换 mylostfile.txt

如果该文件存在于git中,无论是在分支指向的提交中还是在丢失的提交中,它都会显示出来。

这将显示所有更改该文件的提交哈希值,因此您可能需要逐个查看它们以查看是否有您想要的文件。

如果它没有显示出来,那么git可能不知道该文件的存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接