Git ref master 现在为空,如何恢复?

2024-05-12

我不完全确定发生了什么,但由于某种原因,我的 git 存储库的主引用文件现在是空的。我们在 Dropbox 上托管存储库,所以也许与此有关......但现在我无法从中提取。它是这么说的:

Your configuration specifies to merge with the ref 'master' from the remote, but no such ref was fetched.

Dropbox 保留文件的版本,因此如果我返回到“master”的先前版本,它会显示:

fatal: object 2d154f82e59a4156a5d3ea04a0617c243ae6dc3a is corrupted
fatal: The remote end hung up unexpectedly

我该如何恢复?


Sigh.

我喜欢 Dropbox,但我绝不会推荐它来“托管”Git 存储库。它的同步对于单文件文档来说足够好,但它还无法提供安全托管 Git 存储库所需的分布式/远程文件系统语义。

希望您只是在 Dropbox 上“托管”一个裸露的 Git 存储库。如果是这样,您应该能够将非裸(工作)存储库中的提交和引用拼凑在一起。还应该可以手动恢复现有存储库,但无论如何您最终可能都需要从其他存储库复制对象,因此您不妨采用以下“高级”方式(而不是“低级”)并处理从其他存储库复制对象(或复制包文件并解压其中的一部分))。

首先对您的工作目录之一进行独立克隆。

git clone file://path/to/myrepo /path/to/myrepo-recovery-work

从其他工作存储库导入引用和对象。

# If you have network access to the other repositories:
cd /path/to/myrepo-recovery-work
git remote add other1 user@machine:path/to/other/working-repo-1
git remote add other2 ssh://user@machine/path/to/other/working-repo-2
# etc.
git fetch --all


# If you do not have network access:
cd /path/to/other/working-repo-1 &&  # on machine with working-repo-1
  git bundle create /path/to/other1.gitbundle --all HEAD
cd /path/to/other/working-repo-2 &&  # on machine with working-repo-2
  git bundle create /path/to/other2.gitbundle --all HEAD
# etc.
# Transfer the bundle files to the machine that has "myrepo-recovery-work"
# (Dropbox is OK to copy the bundles, they are just single files),
# then on that machine:
cd /path/to/myrepo-recovery-work
git remote add other1 /path/to/transferred/other1.gitbundle
git remote add other2 /path/to/transferred/other2.gitbundle
# etc.
git fetch --all

然后,查看新遥控器上的所有分支,并确定哪些分支应指向重建的中央存储库的哪些提交。

git log --oneline --graph --decorate --abbrev-commit --all
# In addition to looking at the history graph, you might need to examine
# the content of certain commits. Just check them out as a detached HEADs.
git branch recovered/maintenance decafbad
git branch recovered/master cafebabe
git branch recovered/development deadbeef
git branch recovered/bug-1234 8badf00d

创建恢复的分支(和标签)并将其推送到新的裸存储库。

git init --bare /path/to/new-central-bare-repo.git # or real Git hosting service!
git remote add new /path/to/new-central-bare-repo.git
git push --tags new 'refs/heads/recovered/*:refs/heads/*'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git ref master 现在为空,如何恢复? 的相关文章

  • 在 MySQL 数据库上使用版本控制 (Git)

    我是一名 WordPress 设计师 开发人员 越来越多地使用版本控制 特别是 Git 尽管我确实在某些项目中使用 SVN 我目前正在使用 Beanstalk 作为我的远程仓库 将所有 WordPress 文件添加到我的存储库中是没有问题的
  • git 可以忽略特定行吗?

    我在手机的本机浏览器上测试时使用 git 同步到phonegap 因此我有以下行 var isPhoneGap false 显然 我在构建时更改了这一点 但是有什么方法可以设置 git 来忽略这一行 或者我是否必须将其放入自己的文件中并以这
  • git 如何在不同分支中保持不同的配置文件?

    请允许我先表达一下我的尝试 假设我有两个分支 Alice1 和 Alice2 Alice1 有自己的服务器 Alice2 也有自己的服务器 我希望能够签出 Alice1 编写我的代码 然后通过使用保存在 URL 配置文件中的 URL 直接推
  • 我如何知道哪些文件已在 git 中标记为“假设未更改”

    这个答案 https stackoverflow com a 936325 554807向您展示如何将 git 管理的文件标记为 我不希望从该文件的存储库进行更改 IE 拥有该文件的您自己的本地未跟踪版本 即使它仍然受到 git 的修订控制
  • git 漂亮格式占位符之间的空格

    因为某些原因 这个原因 https stackoverflow com questions 53034425 git log pretty format windows strange behavior 我可能需要运行这样的 git 命令
  • 错误:无法锁定引用..“引用/标签”存在;无法创建“参考/标签/”

    当我尝试从 github 中提取更改时 出现奇怪的 无法锁定引用 错误 我尝试过 git gc 并查找类似的错误 但找不到解决方案 gt git pull error cannot lock ref refs tags v2 8 refs
  • Git 存储库损坏(标头检查不正确;松散对象已损坏)

    昨天晚上我在写提交消息时遇到了电源故障 当我重新启动机器时 我无法完成提交 我跑了git reset 添加回更改的文件 然后再次尝试 得到 git commit error inflate data stream error incorre
  • 读取 git 的最后一次提交和提交号

    在使用Git源代码的maven项目中 每当我使用maven编译构建时 是否可以读取git的最后一次提交和提交号 我想使用该提交编号来找到最后一次提交 这是假设您想要读取该信息 然后将其存储在属性文件中 基于https github com
  • Gitlab-runner 更改 builds_dir

    我在生产服务器上的默认 builds dir 是 root builds qL8eZYTH 0 faramarzqoshchi testing gitlab runner 我希望它是这样的 home domain name public h
  • 无法在 github 上的特定分支上生成 git no such file or directory

    问题出在这个 fork repo 上 https github com RubenWillems CCNet https github com RubenWillems CCNet 我可以在同一台笔记本电脑上安装其他叉子 但不能使用此叉子
  • 在 Git 中查看已删除的文件

    我已使用 Git 删除了一个文件 然后又提交了 因此该文件不再位于我的工作副本中 我想查看该文件的内容 但不想真正恢复它 我怎样才能做到这一点 git show HEAD path to file 您可以使用显式提交标识符或HEAD n查看
  • “无法同时更新路径和切换到分支”

    我有时会使用checkout b创建新分支的选项 同时将其签出并在一个命令中设置跟踪 在新环境中 我收到此错误 git checkout b test track origin master fatal Cannot update path
  • 关闭 Sublime Text 3.2 中的 git 集成

    如果我想关闭 Sublime text 左侧装订线中的 GIT 集成 又名史莱姆绿线 我只需将其切换为 false 26 show git status false 但是 当在首选项中进行设置时 我收到错误 尝试解析设置时出错 意外的字符
  • 如何使用git查看指定版本的Webkit?

    谢谢 从链接http trac webkit org wiki UsingGitWithWebKit http trac webkit org wiki UsingGitWithWebKit 使用 git 检查 Webkit 有以下 3 个
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • 卡在 git 提交窗口

    我被困在这个窗口了 我做了一个git add a就在之前 然后git commit在 git cmd exe 中 我怎样才能离开这里 我写了我的提交消息并按回车键 但什么也没发生 我担心只是关闭窗口 我在互联网上找不到任何内容 官方网站没有
  • 用于跟踪远程分支的 Git 子模块

    我正在尝试使用 git 子模块将 10 多个存储库聚合到一个结构中 以便于开发 它应该克隆模块并签出分支 相反 模块以分离头模式检出 git clone email protected cdn cgi l email protection
  • 为什么 git-cherry pick 没有说要提交什么?

    我对以下问题进行了很多搜索 但无法获得任何实质性信息 我创建了一个临时分支 202116 并尝试对 gerrit 202116 进行挑选 并收到以下消息 为什么我无法挑选此提交以及为什么会收到此错误 lt gt git fetch ssh
  • Git - 在特定提交之前压缩历史记录中的所有提交

    我有一个 Mercurial 存储库 正在将其转换为 Git 提交历史记录非常大 我不需要新存储库中的所有提交历史记录 一旦我将提交历史记录转换为 Git 并且在推送到新存储库之前 我想将某个标记之前的所有提交压缩为一个提交 所以 如果我有
  • 是什么让 DVCS 中的合并变得如此简单?

    我读于乔尔谈软件 http www joelonsoftware com items 2010 03 17 html 通过分布式版本控制 分布式部分实际上不是 最有趣的部分 有趣的是 这些 系统根据变化来思考 而不是 就版本而言 and a

随机推荐