0

我用以下方式创建了一个存储库:git init --bare在服务器上,我想向它推送一个分支。

git push origin Dev

但我明白了

remote fatal: you are a branch waiting to be born.

我究竟做错了什么?
如果我不使用它似乎可以工作--bare,但我认为这就是我应该使用的。

编辑:如果我在服务器上有一个接收后挂钩,我只会得到这是错误的。我的 post-receive 钩子中有这个:

#!/bin/sh
GIT_WORK_TREE=/var/www/UML git checkout -f

我想要这一切做的是在我推送到远程时更新网络服务器

还有我的 git 配置:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[gui]
    wmstate = normal
    geometry = 887x427+25+25 330 192
[branch "master"]
[branch "Dev"]
[remote "origin"]
    url = ssh://mike628@192.168.2.2/GR
    fetch = +refs/heads/*:refs/remotes/origin/*
4

1 回答 1

0

您是否首先克隆了远程(裸)存储库或origin正确设置了远程?是否存在同名的分支Dev并且有提交?确保在该分支上至少有一次提交。


在你的钩子中尝试git reset --hard而不是git checkout -f. 还可以尝试exit 0;在末尾添加(尽管这只会隐藏之前语句的退出代码)。你的钩子里的东西失败了。是在你的钩子脚本上设置的可执行位吗?如果你直接在服务器上执行钩子脚本而没有 git 干预会发生什么?

还要确保您的 git 进程在您的/var/www/UML目录中具有写入权限,因为脚本由运行 git daemon 的用户/组执行

于 2011-07-16T14:03:08.600 回答