4 回答
TA贡献1836条经验 获得超13个赞
我不是专家。但是你可以尝试
git fsck --full --no-reflogs | grep commit
查找已删除分支的HEAD提交并将其取回。
TA贡献1788条经验 获得超4个赞
仅有两个命令可以挽救我的生命
1.这将列出所有先前的HEAD
git reflog
2.这将还原HEAD以提交您删除的内容。
git reset --hard <your deleted commit>
ex. git reset --hard b4b2c02
TA贡献2036条经验 获得超8个赞
您删除的分支不会丢失,它们会通过您显示的获取操作复制到origin / contact_page和origin / new_pictures的 “远程跟踪分支”中(它们也通过您显示的推送而被撤回,但它们已被推送到ref / remotes / origin /而不是refs / heads /)。检查git log origin/contact_page并git log origin/new_pictures查看您的本地副本是否“最新”,以及您认为应该存在的内容。如果在您显示的获取和推送之间有任何新的提交(从其他回购)推送到那些分支上,则可能“丢失”了那些(但您可能会在最近推送这些分支的另一个回购中找到它们) 。
提取/推送冲突
看来您是以正常的“远程模式”获取(远程ref / heads /本地存储在refs / remotes / origin /中),但是以“镜像模式”推送(本地ref /被推送到远程ref /) 。检查您的.git / config并协调remote.origin.fetch和remote.origin.push设置。
进行备份
在尝试任何更改之前,请做一个简单的tar或zip归档文件或整个本地存储库。这样,如果您不喜欢发生的情况,则可以从已还原的存储库中重试。
选项A:重新配置为镜像
如果打算将远程存储库用作本地存储库的镜像,请执行以下操作:
git branch contact_page origin/contact_page &&
git branch new_pictures origin/new_pictures &&
git config remote.origin.fetch '+refs/*:refs/*' &&
git config --unset remote.origin.push &&
git config remote.origin.mirror true
您最终可能还希望删除所有的ref / remotes / origin / refs,因为如果您在镜像模式下运行,它们将无用(您的普通分支代替了通常的远程跟踪分支)。
选项B:重新配置为普通遥控器
但是,由于您似乎正在将这个远程存储库与多个“工作”存储库一起使用,因此您可能不想使用镜像模式。您可以尝试以下方法:
git config push.default tracking &&
git config --unset remote.origin.push
git config --unset remote.origin.mirror
然后,您最终将要删除远程回购中的伪造的refs / remotes / origin refs git push origin :refs/remotes/origin/contact_page :refs/remotes/origin/new_pictures …。
测试推送
尝试git push --dry-run看看它git push会做什么,而无需在远程仓库上进行任何更改。如果您不喜欢它说的那样,请从备份(tar / zip)中恢复并尝试其他选择。
- 4 回答
- 0 关注
- 5266 浏览
添加回答
举报