我有2个网络服务器,一个测试,一个直播。两者都使用git管理其代码库。
我在测试服务器上开发,然后将更改从测试服务器上的主分支推送到具有git push
的实时服务器。但是,目前我必须登录到实时服务器并运行git reset --hard
以使更改反映在实时代码中。
我推送时显示警告消息git建议更改receive.denyCurrentBranch
的设置以更改此推送的处理方式。但是,据我了解,我可以让它拒绝推送,接受警告并要求git reset
,或接受它而不发出警告并需要git reset
。我可以接受推送不要求重置吗?
谢谢!
答案 0 :(得分:6)
听起来你正在推进一个非裸的回购(也就是说,在磁盘上检出了回购文件的副本)。您可以推送它,但Git不会在没有git reset
(或git checkout
)的情况下自动更新工作副本文件。您可以使用后接收挂钩自动执行检出 - 有一个很好的操作方法here。
答案 1 :(得分:0)
mipadi是对的,你真的需要在生产服务器上提供一个裸仓库。如果你对提交后挂钩感到不舒服(很多人都没有)。您可以在运行的服务器上创建一个cron作业 git pull origin master 每半个小时左右。