Git:我将本地机器设置为远程工作流程。遥控器上的文件在哪里?

时间:2012-01-17 22:14:44

标签: git

我正在寻找的是我的代码是通过推送从左到右行进的:

local machine  ->  bare remote repository  ->  full remote repository

注意:裸仓库与完整仓库在同一台机器上。完整的回购也是我在共享主机上的实时网站。

在完成所有要求之后,我发现我的完整存储库中的服务器上绝对没有创建文件。 git甚至会这样做吗?我是git的新手,所以也许我搞砸了。我所做的一切都列在下面。


以下是我在本地计算机上使用现有代码进行的操作:

$ git init
$ git add .
$ git commit -m "Initial commit"

在远程计算机上,这是我为裸仓库做的事情:

$ mkdir -p $HOME/www/example.git
$ cd $HOME/www/example.git
$ git --bare init

回到本地机器,我这样做了:

$ git push exampleserver master
$ git remote add exampleserver ssh://exampleuser@example.com/~/www/example.git
$ git push exampleserver master

回到远程机器,设置完整的repo / live网站,我这样做了:

$ mkdir -p $HOME/www/example.com
$ cd example.com
$ git init
$ git remote add bare $HOME/www/example.git
$ cd $HOME/www/example.git/hooks/

在裸仓库的hooks目录中,我创建了一个名为'post-update'的可执行shell脚本,它看起来像这样:

#!/bin/sh
cd $HOME/www/example.com
unset GIT_DIR
git pull bare master

exec git-update-server-info

最后,当我在本地机器上完成编码时,我会执行以下操作:

$ git push exampleserver master

这会返回'一切都是最新的'。

1 个答案:

答案 0 :(得分:1)

如果推送回声“一切都是最新的”,那么你的钩子就不会被调用,因为没有任何更新。正如@ysdx指出的那样,标准输出被转发,您可以使用echo输出其他信息。

因此推动实际变化将是这样的:

Counting objects: 5, done.
Writing objects: 100% (3/3), 244 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
remote: /git/server /git/remote
remote: From ../remote
remote:  * branch            master     -> FETCH_HEAD
remote: Updating e10977b..21d83ca
remote: Fast-forward
remote:  test.txt |    2 +-
remote:  1 files changed, 1 insertions(+), 1 deletions(-)
remote: /git/remote
To ../remote
   e10977b..21d83ca  master -> master

你可以看到来自钩子的拉力输出。事实上,所有以'remote:'开头的行都是从钩子转发的。如果没有调用你的钩子,你会得到这样的输出:

Counting objects: 5, done.
Writing objects: 100% (3/3), 243 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To ../remote
   21d83ca..aac857c  master -> master

除此之外,可能值得使用pushd / popd进行目录更改。我基本上使用了与你相同的脚本来生成上面的输出:

pushd ../server
unset GIT_DIR
git pull remote master
popd

exec git update-server-info