我怎样才能防止这个git钩子形成一个无休止的循环?

我怎样才能防止这个git钩子形成一个无休止的循环?,git,Git,我推到一个空的存储库。在那里,我使用了一个post接收钩子,它使该服务器上的一个工作目录在该裸存储库上执行拉/推操作 这不仅用更改更新工作目录,而且还将用户添加的任何内容推送到裸repo(服务器) 我还没有运行它b.c它会导致无休止的循环,因为推送到服务器会再次启动post接收钩子 我需要这只发生一次,而不是一次又一次 代码如下: #!/bin/sh # deprecated # git --work-tree=~/public_html --git-dir=~/root.git checko

我推到一个空的存储库。在那里,我使用了一个post接收钩子,它使该服务器上的一个工作目录在该裸存储库上执行拉/推操作

这不仅用更改更新工作目录,而且还将用户添加的任何内容推送到裸repo(服务器)

我还没有运行它b.c它会导致无休止的循环,因为推送到服务器会再次启动post接收钩子

我需要这只发生一次,而不是一次又一次

代码如下:

#!/bin/sh

# deprecated
# git --work-tree=~/public_html --git-dir=~/root.git checkout -f
# cd /home/username/root.git/hooks

# on a push to the server, run a pull/push to the apps working directory
(
    cd ~/root
    git pull ~/root.git master
    git add -A .
    git commit -m "automated commit on push"
    git push ~/root.git master
)

echo "*"
echo "**"
echo "***"
echo "****"
echo "*****"
echo "success"
echo "*****"
echo "****"
echo "***"
echo "**"
echo "*"

有没有一种方法可以只根据条件运行钩子,即不是每次推送都运行钩子?

假设在钩子中由特定用户推送,那么您可以通过git log查看上次提交的作者:

LAST_USER=$(git log -1 --pretty=format:"%an")

如果是钩子使用的用户,则不要运行推送。

假设在钩子中由特定用户推送,则可以通过git日志检查上次提交的作者:

LAST_USER=$(git log -1 --pretty=format:"%an")
如果是钩子使用的用户,则不要运行推送