2015-09-11 152 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