推送Git源代码树,而不仅仅是存储库

Odd*_*ing 5 git

我正在使用Git错误.我想用得对.

这是我得到的:

在这里,在我的开发机器上是一个Git存储库,我承诺并测试.

在那里,是我的网络服务器 - 这个代码将被部署的地方.Web服务器有另一个裸git存储库,当我准备部署时,我可以通过SSH推送它.

我想要发生的是查看Git存储库,该存储库始终具有最新版本的源文件(在某些分支或某些标记上).

我可以做的是在Web服务器上创建另一个(非裸)git存储库,并在每次推送后进行手动拉取,但我希望每次执行时都不必登录到Web服务器git push.

有没有办法远程"推送到网络服务器并刷新其签出的文件,如果我保证我没有编辑网络服务器上的任何文件"?

或者我只是这样做错了你想打我?:-)

Dam*_*IEU 7

挂钩可能是你在找什么.

您创建一个post-receive挂钩.并且它会在你每次推动之后在服务器上执行.然后你在第二个裸存储库上做一个拉动,你将永远是最新的:)


Mic*_*ant 7

我通常使用包含文件.git/hooks/post-receive创建一个非裸存储库

#!/bin/sh
cd ..
env -i git reset --hard
Run Code Online (Sandbox Code Playgroud)

此文件必须是可执行文件,并且必须签出分支.

然后,每次推送到该存储库时,工作树将重置为当前分支的最新版本.任何本地更改都将被覆盖(但不会删除未跟踪的文件).

当您推送到签出分支时,Git现在会显示警告(并在将来的版本中拒绝它).为避免这种情况,您可以在远程存储库上设置此配置:

git config receive.denyCurrentBranch ignore
Run Code Online (Sandbox Code Playgroud)

您可以在此存储库上工作,但必须在对其进行任何推送之前提交更改.

我在那里找到了提示:http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook : 49551efe-6414-4e86-aec6-544f4834cda3