1

我有一些我想提交的文件,但正计划以较小的组提交它们,以便有一个干净的历史记录,以防我想查看/回滚。我去提交一个子集,但意识到我错过了一个。当 git commit 运行时,我做了一个 Ctrl + C 键盘中断(杀死进程的本能,显然不是正确的举动)。我发现 git 擦除了我的本地文件并完全丢失在历史记录中,以至于我不得不删除本地分支并再次将其拉出。我无法在任何地方找到我的文件,即使使用 git fsck 并查看所有悬空的 blob/commits 也是如此。

我认为这个问题的答案是,“是的,永远不要那样做”,但很好奇是否有其他人曾经犯过同样的错误,但碰巧知道一种恢复方法而不是最终失去一堆工作。

深夜肯定会弄得一团糟。:-)

4

1 回答 1

0

只有当你做一个git commit -a -m "a commit message" (或某种别名)时才会发生这种情况。

避免这种情况的最好方法总是添加,然后提交。

(对我来说)最好的添加方法是使用 --patch 选项:

git add -p

这样,我不仅逐个文件添加,而且在每个修改的文件中逐块添加,以便进行连贯的提交。

于 2013-10-14T18:21:51.133 回答