11

我有一个小项目,我想在我们都可以访问的机器上与其他几个人分享。我创建了本地存储库的裸副本

git clone --bare --no-hardlinks path/to/.git/ repoToShare.git

然后我将 repoToShare.git 移至服务器。

我可以通过以下方式进行检查:

git clone ssh://user@address/opt/gitroot/repoToShare.git/ test

然后我可以在本地 repo 中查看所有内容并对此进行提交。当我尝试将更改推送回远程服务器时,出现以下错误。

*** Project description file hasn't been set
error: hooks/update exited with error code 1
error: hook declined to update refs/heads/master

有任何想法吗?

4

6 回答 6

19

Git 在 hooks 目录中安装了一堆预先配置的钩子,它们不执行开箱即用。如果您碰巧允许对它们执行(例如 chmod +x),那么 git 将尝试运行它们。弹出特定错误会导致默认更新无法运行。要修复,请删除默认更新挂钩。

这个链接有帮助吗?从文中:

我的一位同事在这里遇到了类似的问题,即推送不起作用。您无法推送到本地或远程公共存储库。他得到了 .git/hooks/update 引发的项目描述文件未设置错误。linux 或 Windows 机器上的同一个项目没有发生此错误,并且似乎仅在 Windows Vista 上发生。根据我的研究,钩子/更新默认情况下不会执行,但在 windows vista 中,文件权限意味着它是。删除挂钩/更新解决了这些问题。

于 2008-10-14T07:16:39.113 回答
16

删除挂钩/更新不是您想要做的。

只需将 .git/description 更改为您想要的任何内容 - 例如“FOOBAR 存储库”,或者,如果您是法国人,则为“Le depot de FOOBAR”。

于 2008-12-05T06:14:51.683 回答
2

从 Mac OS X(Git 版本 1.6.1,使用MacPorts编译)推送到 Ubuntu 远程存储库(Git 版本 1.5.4.3)时,我也遇到了这个错误

我已经.git在本地和远程存储库的 /description 文件中添加了存储库的名称,并修复了它。

于 2009-02-03T23:12:30.440 回答
1

chmod -x 挂钩/更新

从您的 .git 目录执行的上述命令只会从更新挂钩中删除执行权限。无需删除文件

于 2011-06-19T11:10:23.713 回答
1

删除文件或阻止其执行似乎是极端的解决方案。如果您不想添加项目描述,那么注释就足够了,或者删除 hooks/update 中阻止推送操作的行。在我的文件中,这些行是:

# check for no description
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
if [ -z "$projectdesc" -o "$projectdesc" = "Unnamed repository; edit this file to name it for gitweb." ]; then
       echo "*** Project description file hasn't been set" >&2
       exit 1
fi

当我将它们注释掉时,一切正常。

于 2011-08-19T13:04:55.987 回答
0

我遇到了与@dragulesq 相同的问题,但使用的是Red Hat服务器。

为了更详细一点,只需将您想要的任何内容作为字符串放在本地的 .git/description 文件中(在我的情况下是我的 Mac OS X);我把website然后放在托管 Git repo 的远程服务器上(可以这么说)编辑 .git/description 文件并再次放入相同的字符串(例如website)。

于 2010-06-13T11:15:58.460 回答