Windows上的Git提交(Cygwin)已损坏。

时间:2011-07-28 23:19:09

标签: git cygwin

我在Windows 7上安装了Cygwin .Git工作很好,直到几天前提交刚刚停止工作。这是一个全新的回购日志:

wt@CO /cygdrive/u/Projects
$ mkdir Temp

wt@CO /cygdrive/u/Projects
$ cd Temp/

wt@CO /cygdrive/u/Projects/Temp
$ touch Hello.txt

wt@CO /cygdrive/u/Projects/Temp
$ git init
Initialized empty Git repository in /cygdrive/u/Projects/Temp/.git/

wt@CO /cygdrive/u/Projects/Temp
$ git add .

wt@CO /cygdrive/u/Projects/Temp
$ git commit -m "hi"
error: invalid object 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 for 'Hello
.txt'
error: Error building trees

我谷歌把它搞糟了无济于事。这是怎么回事?

4 个答案:

答案 0 :(得分:9)

Cygwin git似乎是使用" create-temp-file-then-hardlink-to-destination"创建新的目标文件。方法。我认为cygwin的硬链接令人困惑!

底线:使用:

解决
git config --add "core.createobject" rename

(我的设置是Cygwin git,在samba上运行.git目录)

答案 1 :(得分:2)

请改用Git for Windows。 Cygwin的Git开始走下坡路了一会儿。随着时间的推移,我和我的团队遇到了越来越多的问题。有了一个完整的Git to Windows端口(msysgit / Git for Windows项目),为什么要忍受Cygwin Git带来的烦恼和彻底的破碎?自切换以来,我们没有遇到任何问题。

答案 2 :(得分:2)

这里的问题是,Git的默认创建目标文件的方法并不适用于Windows共享驱动器,而且(与Git for Windows或msysgit不同),Cygwin的Git只是一直在使用该默认值。

直到今天 - 我是Cygwin的Git维护者 - 我刚刚重建它以使用不同的方法在共享驱动器上工作(它有其他缺点,但不是我们可以做很多事情)。如果你再次运行Cygwin的setup-x86[_64].exe并下载最新版本的Git(v2.4.5-3或更高版本),你会发现一切都有效。

(新的Git版本刚刚上传,因此可能需要一段时间才能到达所有镜像,但我认为最多24小时,而且许多镜像比这更快。)< / p>

答案 3 :(得分:0)

问题是回购协议正在运作,但他们神秘地破裂了。该错误似乎表明内部git树对象的文件系统读取问题。查看/cygdrive/u,表示这可能是映射的网络驱动器。

尝试在本地驱动器上运行git以确认网络共享是否正常工作。

不幸的是,我没有任何确切的信息会导致失败。您的网络共享可能不支持git期望可用的文件系统功能。