当git-filter-branch
完成时,它检出新的分支头。这会将您的工作目录更新为干净的状态。您希望从历史中删除的文件已被删除。预先备份是解决方案。
如果您忘记备份它,仍然可以将其还原! Git需要很长时间才能完成,原来的提交仍然存在。在git-filter-branch
之后,将会有一个名为original/refs/heads/master
(如果您过滤了master)的分支,其中包含原始提交。你可以从那里恢复文件。
一般来说,您可以使用git reflog
恢复过滤器和底座。这是每次登录HEAD
时的日志(即,您签出或重新绑定或合并或过滤或...)。例如,在做GitHub的过滤器后,例如,git reflog
是...
abaabaf (HEAD -> master, origin/master, origin/HEAD) [email protected]{0}: filter-branch: rewrite
8ef0c30 (refs/original/refs/remotes/origin/master, refs/original/refs/heads/master) [email protected]{1}: clone:
我可以使用8ef0c30
或[email protected]{1}
(即的HEAD
以前的位置)或original/refs/remotes/origin/master
或original/refs/heads/master
要回,事情是前过滤器运行。
进行备份是解决方案。 – Schwern
Git主要是一个Unix程序。在Unix中,您不会将每个令人担忧的情况都集成到您的可执行文件中。你(希望)小型单独程序合作实现你的目标。 – PSkocik