当前位置:  开发笔记 > 运维 > 正文

Git:如何在推送到远程目录时更新?

如何解决《Git:如何在推送到远程目录时更新?》经验,为你挑选了2个好方法。

我想使用git来管理远程服务器上的一些数据,所以我在那里设置了一个非裸存储库.我可以毫无问题地推送它,并且存储库本身会更新,但实际文件不会被更改/添加/删除.我必须ssh到服务器并做一个

git reset --hard HEAD

获取文件结构以实际更新.

该怎么办?



1> Lee B..:

你不应该这样做.建议使用裸存储库.换句话说,没有文件签出,只有.git目录本身.然后,您可以将存储库签出到服务器上的其他位置 - 例如,您的Web根目录.这样,你得到:

git最佳实践.根据Git文档,如果你不遵循它,你可以得到"意想不到的结果".任何做过一些编程工作的人都知道"意外的结果"代码"可能会吃掉你的孩子,应该不惜一切代价避免".

如果您计划从Web服务器访问服务器上的签出文件,则可以提高安全性.

您签出的代码的本地修改,以及快速更改实时签出代码的功能.您可以尝试直接在存储库上执行此操作,但它会很麻烦并且更容易出错.

无需更新实时服务代码即可更新服务器存储库.这非常重要,如果您正在远程工作并需要向服务器发送内容,然后在为您的实时服务做好准备之前进行进一步的工作,或者您的实时服务代码发生了变化(例如,不同的配置设置)并且需要将这些更改与repo中的更改合并,但不能立即执行.

我建议采取以下步骤:

关于设置裸存储库的git文档

查看您的回购中的代码到您的实时服务目标目录

在更新存储库时,设置一个git hook(post-commit应该是正确的IIRC)来更新您的实时服务.它应该cd到实时服务目录,并执行git pull --rebase,并可能设置一些文件权限.

从现在开始,只需将代码从开发框推送到repo.



2> Brandon Rhod..:

幸运的是,现在可以直接在git中支持了!你可以在这个答案中找到我刚刚赞成的详细信息:

/sf/ask/17360801/

它建议配置遥控器

git config receive.denyCurrentBranch updateInstead

所以推送导致更新的工作副本!

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有