Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何同步远程和本地Git存储库_Git_Github_Git Branch_Git Push - Fatal编程技术网

如何同步远程和本地Git存储库

如何同步远程和本地Git存储库,git,github,git-branch,git-push,Git,Github,Git Branch,Git Push,我已经在Git服务器/website()上创建了一个测试存储库,我已经将它克隆到我的本地主机上。现在,我可以完美地将本地机器推送到Git服务器 但现在我想在我的实时服务器上部署代码,但不使用FTP或任何其他文件传输方法/工具。我想用Git push方法上传我的文件。这意味着我想直接使用Git将本地主机存储库同步到live server 所以,当我对本地服务器进行任何更改时,我可以将这些更改提交到Git服务器以及live服务器 我已经阅读了很多不同的文档和教程,但我找不到任何简单的方法或直接的方法

我已经在Git服务器/website()上创建了一个测试存储库,我已经将它克隆到我的本地主机上。现在,我可以完美地将本地机器推送到Git服务器

但现在我想在我的实时服务器上部署代码,但不使用FTP或任何其他文件传输方法/工具。我想用Git push方法上传我的文件。这意味着我想直接使用Git将本地主机存储库同步到live server

所以,当我对本地服务器进行任何更改时,我可以将这些更改提交到Git服务器以及live服务器


我已经阅读了很多不同的文档和教程,但我找不到任何简单的方法或直接的方法来实现这一点。

您可以使用post-receive-Git钩子来实现这一点

钩子看起来像这样

cd [LIVE SITE DIR] && git pull origin master
我将描述如何设置部署。我使用与live server相同的服务器,并将其作为存储存储库的地方

  • 我将Git存储库存储在
    /var/Git目录中。应用程序存储在
    /var/www
  • 使用Git init--bare创建Git存储库

    cd /var/git
    mkdir project.git
    cd project.git
    git init --bare
    
  • 将存储库克隆到
    /var/www/project
    文件夹中

  • 将存储库克隆到我的本地计算机
  • 创建后接收挂钩

    cd /var/git/project.git/hooks
    touch post-receive
    chmod +x post-receive
    
post接收挂钩如下所示:

    #!/bin/sh
    unset GIT_DIR
    cd /var/www/project && git pull origin master
如果不取消设置GIT_DIR,则在执行GIT push时将出现以下错误:

    remote: fatal: Not a git repository: '.'
这是因为Git使用变量Git_DIR而不是PWD。请参见此处的更多信息:

当您在本地计算机上进行更改时,提交并推送这些更改,这些更改将自动拉入/var/www/project目录


如果您有一台服务器作为live server,并且您的存储库存储在另一台服务器上。您必须更改post receive挂钩,以便通过ssh连接到live server并在那里执行git pull origin master。

能否请您向我发送有关如何设置或需要执行哪些操作的步骤或完整详细信息,以便我的live server可以连接到我的git存储库/本地存储库。根据您的请求编辑了我的答案。