在Mac中我執行cp -a gitrepo1/ gitrepo2/
,好像文件和目錄包含.git/
都被複制到gitrepo2 /中,我該如何恢復gitrepo2?我複製到另一個git倉庫的git倉庫,如何恢復?
1
A
回答
6
複製操作不應覆蓋舊對象 - 這就是散列對象名稱的重點;他們獨一無二!也許你只是有一個主分支,所以你已經覆蓋了.git/refs/heads/master
分支和.git/HEAD
文件。這隻意味着你想要的提交不再是提交的提交鏈的一部分。這意味着你失去的提交是無法訪問的。我們可以發現可達犯這樣的:
git fsck --unreachable | grep commits | cut -d' ' -3
這應該給你所有不在一個分支的祖先(含)提交列表,或標記提交。此時您可以做各種事情。例如,您可以將所有這些粘合在一起,並將它們發送到gitk以可視化所有這些圖形的瘋狂圖形。如果你只有一個主分支,事情可能會非常簡單。我們只需要完成所有這些'丟失'的提交,按照提交時間排序(如果提交已經通過cherry-pick或rebasing重新排序,作者時間將不太有用),並查看提交結束清單:
git fsck --unreachable | cut -d' ' -f3 | while read c; do git log -1 --format='%ct %H %s' $c; done | sort
這將是兩個回購的價值提交的組合,但消息應該有所幫助。一旦你[希望]發現老人頭,得到其散列號和(假設你的主機和要老師傅恢復到它應有的位置):
git reset --hard <hash>
這應該做到這一點!我不是100%確定git fsck --unreachable
真的,真的顯示全部提交(this值得掃描,即使他們談論的是對象,而不是提交)。也有git fsck --full
,這應該找到沒有父母的提交,但我更不相信它從兩個單獨的,原始源回購找到提交。不過,我認爲這些想法是合理的,所以如果這找不到舊的頭部,那麼我首先會看一個更好的方法來跟蹤對象文件夾中的每個提交以及任何包文件, 。
相關問題
- 1. 如何恢復Git倉庫
- 2. 如何將git倉庫複製到新的svn倉庫?
- 3. 創建一個包含另一個git倉庫的git倉庫
- 4. 如何鏡像和同步一個git倉庫到另一個倉庫倉庫?
- 5. 恢復破碎的Git倉庫
- 6. 恢復Git倉庫/提交等
- 7. 從bitbuckets複製git倉庫到
- 8. 如何恢復從我的Git倉庫中設置的文件?
- 9. git的移動倉庫到另一個倉庫作爲目錄
- 10. 將一個git倉庫作爲分支導入另一個倉庫倉庫
- 11. Git倉庫和TFS倉庫
- 12. 如何將git倉庫的一部分推到另一個倉庫?
- 13. 如何將git倉庫的一部分遷移到另一個倉庫?
- 14. 是否有可能在另一個git倉庫中擁有一個git倉庫
- 15. 如何將一堆git倉庫從一個遠程倉庫移動到另一個倉庫?
- 16. 如何以tar.gz格式恢復導出的git倉庫?
- 17. 用另一個倉庫管理git倉庫
- 18. 在一個Git倉庫
- 19. 檢索一個Git倉庫
- 20. 叉一個Git倉庫
- 21. 在git倉庫
- 22. 從SVN倉庫內恢復一個SVN倉庫
- 23. 移動一個倉庫分支到另一個遠程倉庫git
- 24. GIT權限:倉庫的倉庫
- 25. 分享我的git倉庫
- 26. 如何處理一個Git倉庫
- 27. 每個Eclipse項目或一個Git倉庫的多個Git倉庫
- 28. git push不是git倉庫
- 29. Git倉庫與Mercurial子倉庫
- 30. 在git倉庫中有一個git倉庫,但只有一個遠程
當然,通過恢復常規備份中的文件! – Cairnarvon 2013-05-09 04:07:02
悲劇,沒有備份,沒有遠程回購!我在哭。 – nfpyfzyf 2013-05-09 04:08:19
如果你有一個gitrepo2的遙控器,你可以嘗試設置它並從中恢復? – hd1 2013-05-09 04:10:42