2013-02-13 51 views
2

昨天晚上我完成了一天的工作,去了github並提交,然後點擊同步按鈕。我在屏幕上短暫地看到了一條消息,說明需要解決合併衝突,但是在我完全閱讀它之前,這條消息被自我解散了。Github吃了我的源代碼(我的提交消失了)

我傑出的提交消失了,所以我覺得一切都很好。今天早上我再次開始工作,所有我做的新代碼已經從前兩天恢復到之前的提交。沒有提到我做過的任何改變,也沒有提到我在完成工作日之前所做的承諾......他們剛剛離開。

有關恢復的任何建議?

UPDATE

對於它的價值,我在瀏覽日誌文件在我的git的文件夾中,我看到我的承諾:

37c661799950211c713630301cf8cbe609de6c59 f94366329fa93cec529b83b34a607449725f5270 [user info removed] 1360710557 -0700 commit: Shout page 
f94366329fa93cec529b83b34a607449725f5270 b588ed19e77ef55611a4a82896c5ef2c26f3e4cd [user info removed] 1360710567 -0700 checkout: moving from master to  b588ed19e77ef55611a4a82896c5ef2c26f3e4cd^0 
b588ed19e77ef55611a4a82896c5ef2c26f3e4cd b588ed19e77ef55611a4a82896c5ef2c26f3e4cd [user info removed] 1360710576 -0700 rebase finished: returning to refs/heads/master 
+0

gitk顯示遠程中央回購處於啓用狀態和您本地回購指向的位置之間的區別? – uchamp 2013-02-13 19:01:03

回答

3

嘗試使用git reflog來查找丟失提交的哈希。然後,您可以使用git cherry-pick,git mergegit reset --hard(取決於您想要對丟失的歷史進行什麼操作)來恢復。如果您需要查看差異以確定您的提交,請使用git reflog -p

0

你可能沒有一個地方犯第一,不您?首先檢查你的本地分支:你做

git log --oneline 

不知道是什麼,但如果有一個合併衝突而推,你仍然應該有你的本地更改。

+0

這是使用github用戶界面的mac。我做了提交本地,然後推它(使用同步按鈕)。 git log顯示最後一次提交是我恢復的那個(即,在那裏沒有提到我的) – bugfixr 2013-02-13 14:12:46

+0

所以打開github shell並檢查上面的命令返回的結果。之後,我可以擴展我的答案,幫助您恢復變更。如果您有本地提交,推送失敗不會導致數據丟失! – Sebi 2013-02-13 14:13:55

+0

不知道github shell在哪裏;但我已經安裝了正常的git命令行工具。我去我的本地回購,做了git log命令,最近的提交顯示是兩天前(不是昨天我提交的那個) – bugfixr 2013-02-13 14:19:42