1

我有两个非裸 git 存储库,一个是我在其中开发的本地机器,另一个在我构建的服务器上。在本地存储库中,我有一个带有“git push -f server”的提交后挂钩。每次我在本地机器上提交时,都会将更改推送到服务器。不幸的是,在远程 git 阶段“还原”了我的更改。我必须手动在服务器上执行“git reset HEAD --hard”,这很烦人。如何告诉 git 接受更改而不进行还原,或者如何自动在服务器上进行重置?我试图在服务器上添加一个接收后挂钩,但它不起作用。

我发现了一个类似的问题How do I push to the current git branch on remote,并立即反映更改?,但它没有帮助(

4

1 回答 1

0

您可以选择:

    $ cat > hooks/post-receive
    #!/bin/sh
    GIT_WORK_TREE=/var/www/www.example.org git checkout -f
    $ chmod +x hooks/post-receive
  • 或者,您可以推送到一个裸仓库,并有一个钩子切换到实时非裸仓库,从裸仓库中提取新提交:
    请参阅“远程裸仓库上的 Git 子模块”(您可以忽略子模块方面)

我倾向于支持第二种方法,这似乎比直接HEAD在非裸仓库上进行更改更“干净”。

于 2012-04-10T11:23:06.987 回答