我不知道這臺計算機有什麼問題,但是我關了它,半小時後我啓動它,做git status -uno
,它告訴我一個子模塊「不是」某種東西。然後我意識到.git/submodules
dir是空的。然後我從其他地方複製那些,git status -uno
給了我一堆無關的更改(一個.txt文件突然變成了一個目錄?)。然後我嘗試git pull
,它給我一噸從文件中恢復Git回購「不是GIT packfile」
error: file .git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack is not a GIT packfile
warning: packfile .git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack cannot be accessed
......但拉完成。現在,我仍然有狀態的變化無關,但後來我嘗試git fsck --full
,我得到:
$ git fsck --full
Checking object directories: 100% (256/256), done.
error: file .git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack is not a GIT packfile
fatal: packfile .git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack cannot be accessed
有什麼辦法,我可以恢復這個回購,使得目前選中的文件仍然存在? (我有一些我仍然需要的日誌,但不應該在更大的範圍內檢查)。我本來希望git pull
會恢復它,但顯然它不...
編輯,發現這些打包文件在同一回購的另一個本地副本,但現在出現這種情況:
cp -av /second/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38* /first/myrepo/.git/objects/pack/
‘/second/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.idx’ -> ‘/first/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.idx’
cp: cannot create regular file ‘/first/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.idx’: Permission denied
‘/second/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack’ -> ‘/first/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack’
cp: cannot create regular file ‘/first/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack’: Permission denied
但爲什麼我會被拒絕,我是這些文件的所有者?
$ ls -la /first/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38*
-r--r--r-- 1 MYUSER MYUSER 214656 Aug 18 11:05 /first/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.idx
-r--r--r-- 1 MYUSER MYUSER 111503621 Aug 18 11:05 /first/myrepo/.git/objects/pack/pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack
只是有權限rrr
應該沒有區別吧?! (雖然它似乎已被複制,文件大小看起來是正確的)...
你有沒有工作在當地尚未承諾和推動?如果我處於這種情況,我可能會選擇回滾到之前的提交,並從回購中拉出新的。 –
@TimBiegeleisen - 不,我沒有未提交的更改,但我確實有未跟蹤的日誌文件,我不想丟失。你會建議什麼命令來回滾,'git checkout HEAD〜1;混帳拉'? – sdaau
未跟蹤的文件應該沒問題(我認爲...)。你可以嘗試'git reset --hard HEAD〜N',其中'N'是提交的提交數量。如果您確定遙控器具有所有這些信息,請嘗試此操作。如果您確定,然後及時向後跳,然後再次嘗試拉。 –