Git:User->Server->hook post rec->push to Live Server "Fatal: empty ident <push@blabla.(none)) not allowed" 推送时尽管设置了标识

Git:User->Server->hook post rec->push to Live Server "Fatal: empty ident <push@blabla.(none)) not allowed" when push despite having identity set

我收到这个错误:

架构和工作流程是这样的:

1)开发者通过ssh推送到远程repo(dev server)-> 2) 开发服务器有一个 post 接收挂钩,它通过 ssh->

在实时服务器上调用 bash 脚本
#!/bin/bash
while read oldrev newrev refname
do


    branch=$(git rev-parse --symbolic --abbrev-ref $refname)

    # Use this if-sentence to only update live server if branch is the wanted branch, e.g. master or stable
    if [[ "desarrollo" == "$branch" ]]; then
            # Fetch this branch from live-server
            ssh push@mpdvsweb-test.jusbaires.gov.ar '/bin/gitmirror'
    fi
done

3)Live服务器执行从开发服务器获取数据的脚本->

#!/bin/bash

cd /var/www/penal_test_git
git fetch git-repo
git merge -m 'Overwriting live server' -s recursive -X theirs git-repo/desarrollo

4) 我在每个开发人员的机器上都收到以下错误(为我们设置了 git 配置 --global 但它不起作用,我也尝试为存储库设置它但它没有也不工作)

什么可能失败了?

git config --local -lreturnsuser.name和user.email和git config -lreturnsuser.name和user.email 两次,也许一次是局部的,一次是全局的。在另一台开发机器上,全局是唯一的一组,也没有工作

我解决了它,我改变了三个东西并且它起作用了。首先我删除了本地 repo 身份,然后我重新定义了全局配置(我不知道这是否有所不同,因为我已经正确配置了全局配置)。 然后,我不得不更改我的实时服务器上的 bash 以获取 --all,否则如果没有该标志,如果有人直接编辑实时服务器上的文件,则会在开发服务器的挂钩执行它时导致冲突合并不会让合并发生,这样一切都会被覆盖:

#!/bin/bash

cd /var/www/penal_test_git

git fetch --all
git reset --hard git-repo/desarrollo

最后,文件有 root 用户权限而不是 www-data 权限,因为另一个开发人员更改了它,并且不允许使用获取覆盖文件。这是另一个错误的一部分,但它有助于使其正常工作。