0

我在 Linux 上使用 GitKraken 已有几年了。到目前为止,它工作得很好。但是昨天突然我收到了来自 Gitkraken 的消息,他们不再提供对私人存储库的免费访问!我很着急,需要查看我的隐藏文件和当前文件之间的差异,所以我在终端中运行了一些奇怪的 git 脚本。我没有成功,所以我获得了 GitKraken 的免费试用版。然后它对我想做的事情工作得很好,而且我能够拉和推一天。但是昨天我提交了一些文件,当我尝试拉取时,它会询问:“我的分支名称”应该从哪个远程/分支推送或拉取?当我写 origin/"my-branch-name" 并提交它时,它给出了这个错误: 无法读取未定义的属性 "fullName"!

我也尝试在终端中使用 git;当我运行 git status 时,我收到以下消息:

error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
On branch dev
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
error: index file .git/objects/pack/pack-a08c14513ad1a7f74b2c0ad8883470516745005c.idx is too small
Your branch is based on 'origin/<my-branch-name>', but the upstream is gone.
  (use "git branch --unset-upstream" to fixup)

nothing to commit, working tree clean

我不确定我的 git 文件发生了什么,无论是来自 Gitkraken 还是我运行的脚本来查看隐藏文件的差异。stackoverflow中也有类似的问题,但没有一个同时出现这两个错误: 索引文件太小上游也不见了!

更新:

通过在错误消息中应用建议的“git branch --unset-upstream”,我能够拉和推,但我仍然得到所有索引错误。除此之外,如果我尝试使用 GitKraken 进行拉动,它会失败,然后在终端中通过运行 Git status 它将为上游显示相同的消息:

 "Your branch is based on 'origin/<my-branch-name>', but the upstream is gone." 

所以我相信 GitKraken 正在搞乱 git 文件!

4

1 回答 1

0

有两个不同的问题:

  1. 您命名的包文件的包索引文件pack-a08c14513ad1a7f74b2c0ad8883470516745005c.pack已损坏。究竟是什么损坏了它,以及如何损坏它,尚不清楚,但它不再有效,Git 无法读取它。

    如果这是存储库的唯一副本,请查找整个计算机文件系统的备份,因为这些备份可能包含存储库损坏之前的良好副本。此外,在尝试对其进行任何修复之前,制作损坏存储库的安全副本(例如,在另一台计算机或 USB 记忆棒或任何可用的备份存储介质上的一个或多个备份副本),以便在修复过程使情况变得更糟时,您可以恢复到受损程度较小的状态。

    幸运的是,包索引文件是 Git 本身从包文件生成的。因此,您可以使用git index-pack. 这假设包文件本身是完整的。

    鉴于(索引)文件已损坏,可能其他文件也已损坏。如果您有此存储库的备份,检查它可能是明智的,并且可能使用它而不是此存储库。在这个存储库上运行可能是明智的git fsck,同时检查其他文件。

    这个问题产生了您看到的所有以单词 为前缀的错误error,因此如果可以修复它,您将得到一个更简单的错误。

  2. 可能是因为损坏的索引,或者可能是作为一个单独的项目,远程跟踪名称 丢失或无法读取。这产生了消息。这可能是完全正常的;例如,在切换回空的主分支时看到上游消失的消息?refs/remotes/origin/the-name-you-omittedupstream is gone

于 2020-11-26T19:26:11.220 回答