所以我一直被这个奇怪的 git 问题所困扰,我自己和其他一些开发人员都无法解决。这里是:
我创建了一个裸仓库,用于在测试服务器上使用 git 管理网站更改。对于这个例子,repo 在这里:/home/website/website.git 网站公共根目录在这里:/home/website
我通过执行以下命令创建了 repo:git repo 目录“website.git”中的 git init --bare
接下来,我在其他地方的机器上拥有我的本地仓库。这是一个标准的 git 仓库。我建立了网站,准备好部署。准备好后,我将其推送到裸仓库。来自我的本地仓库。有一个接收后挂钩可以将最新的文件树检出到网站的公共根目录中。因此,当我在本地 repo 上更改内容并在 localhost 环境中对其进行测试时,一旦满意,我就可以将它们推送到实时服务器。
这是我面临的问题:我可以很好地推动。没有问题。一切都按预期工作。代码被检出到公共根目录。每个人都很开心,继续他们的生活。
但是!!!:该站点是一个CMS站点。用户登录并上传内容。文件在网站的公共根目录上创建,即 GIT_WORK_TREE。
所以NBD对吧?!我可以时不时地从实时的裸仓库中提交文件,然后像以前一样将它们拉回我的本地环境。所以我在服务器上登录 SSH。导航到 /home/website/website.git 然后运行这个命令:GIT_WORK_TREE=/home/website/ git add ../
我得到了这个烂摊子:
error: unable to create temporary sha1 filename ./objects/cb: No such file or directory
error: error_log: failed to insert into database
error: unable to index file error_log
fatal: adding files failed
我以前在其他服务器上做过这个,据我记得它工作得很好。所以我就像WTF一样,这台服务器上一定有什么奇怪的东西。我去了另一台服务器,并复制了完全相同的步骤。得到了完全相同的问题。所以现在我担心我正在失去理智,也许这些以前的 git 经验都是在我的脑海中编造的...... *好吧,让我们不要走那么远...... :)
也许有人可以在这里帮助我。我已经使用了很多 git,但似乎无法破解这个。
哦,其他一些可能有用的规范:运行 CENTOS 6.2
我仔细检查了所有权限。我什至尝试以递归方式将所有内容更改为 777,以确保我不会以某种方式丢失它。确保所有文件都归正确的用户所有。递归地chown。我还尝试了这里描述的这个问题的标准解决方案:https ://answers.atlassian.com/questions/132671/git-commit-fails-with-sourcetree-error-unable-to-create-temporary-sha1-文件名-git-objects-d8-file-exists 那也没用。不知道从这里去哪里。
请帮我!!!!我觉得 Linus 现在正在对我玩残酷的把戏。