所以。我是git的新手。而且我想我可能已經超出了我的修復能力(hooray)。與GIT歷史混淆摧毀最近提交...如何恢復?
這裏的故障:
我做了一個遠程目錄,並意外地包含在最初的一些非常大的文件提交。這使得人們很難用它做任何事情。 (我一開始並沒有意識到,並且已經進行了修改,並且一直使用我自己的目錄)
我瞭解到,僅刪除文件並提交刪除操作並不能幫助克隆目錄的人員,並瞭解通過命令來修改歷史,如:
git filter-branch --tree-filter 'rm -f public/vidos/*' HEAD
這會,據我所知,從公共/ VIDOS /目錄中刪除所有文件,擺脫他們的所有內存。
這似乎發生了。我可以成功克隆(無內存錯誤),並且克隆副本中沒有超大文件。
今天早上(愚蠢地確認我確實匹配了遠程存儲庫後(即擺脫了我所有的本地資料,認爲它應該是最新的除了那些大文件以外的任何東西),我開始與在目錄中,並實現了所有的文件似乎是因爲他們在初始檢查(無修改,有事情我修改了很多,都顯示出來)
我做
git log
查看所有修改,並可以看到我的所有提交(包括從目錄中刪除超大文件的提交)。我沒有
git reset hashcode
回滾到適當的混帳(與我從日誌中得到的散列碼)。
除...即使它認爲我是在正確提交,文件仍等同於那些我在第一次開機。
我可以回頭看看自己的歷史,看到我沒對任何目前未修改的文件都進行過濾分支...我真的很困惑,爲什麼我的更改不再存在。我承諾...我推...我非常確定遠程存儲庫有我所有的變化(可以檢查出來(會永遠耗盡內存,但我會得到的文件),並看到更改.. ......但我再也看不到他們了
我做了些什麼愚蠢的東西嗎?是否搞亂了歷史做了一些我沒有意識到的事情?我描述的事情是不是完全不可能搞砸了我的(也就是說,我應該看到一個完全不同的方向嗎?)
我真的,真的想讓我的修改回來......複製所有的代碼(並記住我甚至是DID)將是非常困難的有什麼我可以做的嗎?
編輯:
~~~~~~~~~~~ 好吧,重置沒有工作,但這樣做:
git checkout hashcode
似乎工作就好了,我可以看到我的代碼改變了。
但是,結帳意味着我不在任何分支,我不能讓他們承諾這些變化是最「最近的」(它認爲它是最新的)。關於如何讓這個承諾成爲「頭腦」的任何想法?而一旦它是頭,那麼將擺脫我爲了擺脫超大文件而進行的分支過濾嗎?如果是這樣,有沒有人有任何建議,如何擺脫這些超級大文件沒有這種頭痛再次。
如果沒有其他方法,我可以簡單地簽出兩個副本(一個在頭,一個在我最後一個好的提交)並手動複製並粘貼好頭文件,然後提交?似乎它會工作,但不是很乾淨。
'git reflog'說什麼?在那裏你可以找到那裏的任何不可達的提交? – VonC 2010-09-28 12:41:05
它說:64e3dcb ... HEAD @ {0}:64e3dcb92ca80d6d53bb92d9470ca269f73ae044:更新HEAD 7d71565 ... HEAD @ {1}:clone:from [email protected]:/ var/git/pcms_vodpop – Jenny 2010-09-28 12:46:43
但是...恩......我感覺它太短了,因爲我愚蠢地刪除了我的本地副本,並將其克隆出來以測試克隆是否仍在工作。 – Jenny 2010-09-28 12:47:06