如何设置一个Git钩子,以便在推送到ssh://peter@foo.com/~/bar.com.git后,它会转到〜/ bar.com并做一个git pull?

nop*_*ole 37 git githooks

我被建议在远程服务器上进行设置

foo.com/~/bar.com       # live webpage content
foo.com/~/bar.com.git   # a bare repo
Run Code Online (Sandbox Code Playgroud)

所以,从我的本地机器,我可以做到

git push
Run Code Online (Sandbox Code Playgroud)

它会推到foo.com/~/bar.com.git远程机器上(完整的路径是ssh://peter@www.foo.com/~/bar.com.git

如何添加一个钩子,以便在推送之后,远程服务器将cd ~/bar.com执行git pull以便更新所有内容(与本地计算机相同)?(不需要git update为Mercurial 运行吗?)

(这是关系到不能混帐克隆一个服务器上的文件夹,然后编辑和git推? 现在我可以ssh到foo.comcd ~/bar.com和那里等候,做一个git pull每当经过一个git push从本地机器,但它会是不错的它自动完成)

更新:如果您了解具体细节以及如何操作,请仅发布答案.如果您谷歌并在此发布第一个或第二个谷歌结果,它将无济于事.

更新2:我去了~/bar.com.git/hooks并添加了一个post-receive包含内容的新文件:

#!/bin/bash

cd ~/bar.com
git pull ../bar.com.git master
Run Code Online (Sandbox Code Playgroud)

而且chmod 755 post-receive,如果我编辑本地计算机上的文件,然后git com -m "ok"git push,它不进行更改进入远程机器的文件夹~/bar.com

Fra*_*mas 56

您可以为此添加一个post-receive钩子到~/bar.com.gitrepo.为此,请在~/bar.com.git/hooks/目录中添加一个post-receive包含以下内容的可执行文件:

#!/bin/sh

unset $(git rev-parse --local-env-vars)
cd ~/bar.com
git pull
Run Code Online (Sandbox Code Playgroud)

请确保post-receive文件具有可执行位(如755).

现在每当有东西被推到~/bar.com.git回购时,~/bar.com回购都会自动更新.

也可以看看

理解为什么需要取消一些环境变量.

  • `post-receive`只是一个shell脚本.你可以放任何东西. (2认同)