我在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
我谷歌把它搞糟了无济于事。这是怎么回事?
答案 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期望可用的文件系统功能。