当同一分支上有新提交时,自动将本地 git 存储库与远程存储库同步

automatically sync local git repository with remote repository when there is a new commit on the same branch

我已经在亚马逊 ec2 实例上克隆了一个 git 存储库。我想让 ec2 实例上的本地存储库在远程存储库上的同一分支有新提交时始终自动同步(可能使用 git pull command)。我怎样才能做到这一点?

如果您希望使服务器与服务器所在分支上的最新更改保持同步,则可以按照此处的步骤操作。 'Git pull' 将在进行提交或关闭拉取请求时进行。

将此添加到您的代码库中以触发,

// This function serves as the Payload URL for Github's webhook
// https://github.com/reponame/projectname/settings/hooks/
public function post_receive() 
{
    // copied from 'https://gist.github.com/1809044'
    $commands = array(
        'hostname',
        'echo $PWD',
        'whoami',
        'git fetch',
        'branch=$(git symbolic-ref -q --short HEAD)',
        'git reset --hard origin/$branch',
        'git pull',
        'git status'
    );

    // Run the commands for output
    $output = '';
    foreach($commands AS $command){
        // Run it
        $tmp = shell_exec($command);
        // Output
        $output .= "<span style=\"color: #6BE234;\">$</span> <span style=\"color: #729FCF;\">{$command}\n</span>";
        $output .= htmlentities(trim($tmp)) . PHP_EOL.'<br/>';
    }

    print_r($output);

}

转到 Github.com、https://github.com/reponame/projectname/settings/hooks

上的 Webhooks 和服务

点击"Add Webhook"

在 "Payload URL" 中,指定要启用自动 'git pull' 的服务器的 URL,例如

"https://yourserver.com/github/post_receive"。我们需要确保 URL 是 https(安全),否则我们将得到 302

或者,单击 "Disable SSL verification"

对于 "Which events would you like to trigger this webhook?"、select "Let me select individual events." 并选择 "Pull Request" 和 "Push"

点击"Add webhook"

在 "Recent Deliveries" 中,确认您得到的响应是正确的并且是绿色的。

Webhook Post 请求在您的服务器上触发以下命令,

在 Apache 服务器上设置 www-data 组权限

sudo apt-get install members

members www-data

adduser username www-data

chown www-data:www-data -R username

cp -R /home/username/.ssh /var/www/.ssh

chown www-data:www-data -R /var/www/.ssh

ls -la /var/www/.ssh

sudo chmod g+w .git -R