Egit + GitHub + Windows/Linux 兼容性问题

3
我不知道这是否与Github有关...也许不是...
场景: Github仓库只创建了一个包含一行内容的文件(最小测试要求)。
参与者:
1. Windows 7 + Eclipse + egit.core_1.1.0.201109151100-r (我们也尝试了最新的每夜构建版本) 2. Linux + Git 1.7.7.3 (我们也尝试了1.6版本)
步骤:
1. 任何一位参与者创建一个包含一行内容的文件的仓库。Github正确显示该内容。最后提交哈希值为(例如): 1 2. Linux参与者更改行内容,提交并推送。最后提交哈希值为: 2 3. Windows参与者拉取...更改行内容,提交并推送。最后提交哈希值为: 3 4. Linux无法再次拉取,出现以下错误: ``` error: unable to find "hash 3" fatal: object "hash 3" not found ``` BUG: 自从Windows参与者第一次推送以来,Linux参与者就再也无法拉取。
需要注意的事项:
- Github正确显示三个提交,最后一个为数字3。 - 在Linux中,`git fsck`没有任何输出... - 如果Linux删除仓库并重新克隆,则可以正确地拉取到"hash 3"。 - 如果Linux将其重置为HEAD,则会响应: `HEAD is now at "hash 2"`。
在某种程度上,Linux的git知道HEAD是"hash 3",但无法找到它。
提前感谢您的帮助 :)
最后显示的命令:
$ git pull
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 9 (delta 2), reused 6 (delta 0)
Unpacking objects: 100% (9/9), done.
error: unable to find a11bcd8a714678038f504a107aa008a00a4e1e52
fatal: object a11bcd8a714678038f504a107aa008a00a4e1e52 not found

1
你能稍微改一下措辞吗?按照这个说法,不太容易理解。 - Noufal Ibrahim
你能展示给我们“实际运行的命令”和“实际生成的错误信息”吗? - larsks
这里有两个与代码相关的问题:https://dev59.com/Tm855IYBdhLWcg3w1oPa 和 https://dev59.com/sG445IYBdhLWcg3wapzF,它们有些相似,但并不完全相同。 - VonC
嗨VonC...问题是没有任何损坏...并且fsck命令根本没有显示任何问题:P - FlamingMoe
如果你创建了一个新的空分支并将其推送到服务器,那么你可以在 Linux 中进行拉取吗?git branch Foo && git push origin Foo - Tower
2个回答

1

我使用基于Eclipse + EGit的Zend Studio 9出现了完全相同的问题。"有趣"的是:

  1. 在Windows(EGit)推送后,现有仓库无法从源推送或拉取
  2. 如果您尝试将主库克隆到全新的存储库,则一切正常
  3. 新克隆存储库中的文件是最新的。 新克隆的存储库可以顺利地从源推送和拉取
  4. "origin"可以再次克隆,可以尽可能多地拉/提交/推送,一切都正常
  5. 旧存储库仍然无法推送/拉取
  6. 如果您从Windows(EGit)进行推送,则从那时起,新副本也会停止使用相同的错误消息工作

现在,肯定是EGit / Windows Git弄糟了某些东西,但由于数据在"origin"中是最新的,并且克隆运行顺畅,所以最终我认为这是一个git bug...

Duccio


0

我遇到了同样的问题。

在Windows机器之间推送和拉取工作正常,但是在服务器上拉取时,我会得到以下错误:

错误:无法找到9a95b38554e01849e0d2dd0c769dfd9b130aa123 致命错误: 对象9a95b38554e01849e0d2dd0c769dfd9b130aa123未找到

我发现如果我创建一个空分支并将其推送,然后拉取就可以正常工作:

git branch Foobar

git push origin Foobar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接