在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