在git交互重基期间添加了新文件,重基中止,新文件丢失

在git交互重基期间添加了新文件,重基中止,新文件丢失,git,Git,我之前在提交多个节点时执行了git rebase-I。我添加了一些我想添加到提交中的新文件 看起来我在错误的节点上,所以我立即做了一个git重基——中止。那些新文件现在完全消失了。在reflogs中,似乎发出了删除命令(删除文件模式100644),但文件名不存在 这看起来不太好,但我想我会问-这是可恢复的吗?因为这些文件从未添加到DAG中,除非您在某处有它们的第二个副本,否则它看起来是不可恢复的。但是,如果您将它们添加到索引中,您将能够通过“git fsck--lost-find””找到它们,正

我之前在提交多个节点时执行了git rebase-I。我添加了一些我想添加到提交中的新文件

看起来我在错误的节点上,所以我立即做了一个git重基——中止。那些新文件现在完全消失了。在reflogs中,似乎发出了删除命令(删除文件模式100644),但文件名不存在


这看起来不太好,但我想我会问-这是可恢复的吗?

因为这些文件从未添加到DAG中,除非您在某处有它们的第二个副本,否则它看起来是不可恢复的。但是,如果您将它们添加到索引中,您将能够通过“
git fsck--lost-find”
”找到它们,正如@jefromi所建议的那样

更多信息:

查看reflog将向您显示分支之前指向的位置。您希望使用
git log
来创建实际的历史记录。添加
--stat
选项以查看每次提交时的文件更改。

否,更改无法“恢复”,因为它们可以通过单个命令捕获。是的,这些更改是在git fsck中发现的,还有100多个我必须整理的旧更改。是啊,但总比完全失去好

需要注意的重要事项: -一旦您执行“git add”,提交节点就会被记录下来——从那时起,事情就不会完全丢失 -“git rebase abort”与回滚事务不同,它更像是“git reset--hard”,它将删除在rebase过程中添加的任何新文件。Git不会跟踪您在重设基础期间所做的更改,因此它无法“撤消”或回滚这些更改。在rebase过程中,您处于无人区,中止rebase就是将git重置回以前的提交节点

为了重新总结这个问题,我做了一些更改,并将它们组织成单独的提交,每个提交一个特性。中途,我意识到我错过了一个早期(未推送)提交中的一些文件。我做了一个git隐藏,启动了一个交互式重基,做了一个git隐藏弹出,将丢失的文件添加到以前的提交中,并意识到我将新文件添加到了错误的提交节点。然后,我做了一个git rebase--abort,它删除了那些新文件,通常都很糟糕


TLDR:在交互式重新基址期间,如果不先备份,请勿添加新文件-如果中止重新基址,您的文件将(大部分)丢失,并且不容易恢复。

丢失的文件是全新的文件,以前没有在索引中。git日志显示对我提交的文件的更改,但似乎没有显示“更改”(删除)新的未提交文件在重新设置和删除文件的基址时,使用
git add-A
添加所有更改(包括删除)添加到索引。一旦您
git-rebase--continue
,更改将被考虑。
git-rebase--abort
如果您仍在交互式rebase中,将丢弃您在任何步骤中所做的任何操作。git-rebase--abort删除了新的、以前未老化的文件,而不是执行干净的“撤消”重新阅读您的问题。鉴于该文件是在rebase期间创建的,但从未提交,它们很不幸已丢失。更新答案。如果通过
rebase--abort
删除了这些文件,则它们可能位于索引中。
rebase
不会接触到完全未跟踪的文件。并且索引不是obje吗cts写入对象目录?@chaqke:git-fsck找到有用的东西了吗?您可以使用git-fsck--lost-found将悬空对象写入.git/lost-found。