2015-09-11 155 views
0

我一直在分支上工作,并在昨晚晚些时候进行了更新,包括更新的测试文件(9月10日)。Git从远程机器压扁我的提交,丢失提交?

今天早上我被要求做一些小的改动并压扁提交。不幸的是,我从一台最后一次提交是从9月8日开始的另一台机器上做了这个。所以我跑的命令是

git rebase -i head~7

历时给当地分支机构提出的所有提交,并将其挤压到一个承诺,那么我做了

git push remote branch --force

据我所知这次行动孤立的提交发生在9月9日+10。但是,我似乎无法找到使用git log的任何提交。我想要9月10日的methods.js文件。如果我无法获得散列,有什么方法可以恢复它?

+0

如果您运行'git log master..'(将master更换为您已更改的分支),您无法检索提交吗? –

+0

我正在远程工作 - 我可以在今晚回到家时修复它,但我希望能够从远程机器修复它。 –

+0

如果您没有进行更改,它们将保留在本地回购站中。你可以将远程机器设置为回购并从工作机器连接吗? –

回答

2

您可以使用git reflog来查找在您的rebase之前指向哪里的HEAD。

您还可以使用git fsck --unreachable来查找未被命名引用(即分支或标记)引用的孤立对象。

+0

提交不会使用git reflog显示。 –

+0

@C鲍尔,你也可以尝试'fsck',看我更新的答案。 – joran