这似乎是一个愚蠢的问题,但我觉得我对 GIT 相当了解,但我似乎无法按照我的意愿设置我的开发环境。我要么错过了一些非常简单的东西,要么我做错了:)
我在我的服务器上初始化了一个裸 git 存储库,将其克隆到我的本地计算机,提交我的文件并推送到原点。然后,我在本地创建了三个分支(master、release、develop)并将它们全部发布到 origin。我打算让多个开发人员从开发分支中退出,并且我想确保他们不能推送到主分支,但这对于不同的问题可能更好。
现在,我在本地对文件进行更改,然后将它们上传到测试服务器并通过网络浏览器检查测试服务器。我不得不想象这就是大多数人测试他们工作的方式,除非他们将计算机配置为 Web 服务器并安装了 php 和 mysql。一旦我对自己的更改感到满意,我就会将它们推送到原始存储库,一切都会正常工作。
我的挑战在于保持测试服务器与我的本地计算机同步。我尝试在远程测试目录中设置一个存储库,并且在本地 git 存储库中添加了第二个远程存储库,希望我可以推送到测试存储库以将测试服务器上的文件与本地文件同步。但我不知道如何拥有两个遥控器并使它们与我的本地计算机保持同步。
如果我创建一个新的本地分支,检查它以开始处理新功能,然后将分支推送到我的测试远程,测试远程上的头仍然是主分支,而不是我的新功能分支。因此,我在本地对功能分支进行更改,但是当我通过 coda 将更改发布到测试服务器时,我实际上是在测试存储库的主分支上更改文件。如果我无法使测试快照与本地快照保持同步,我就不知道如何充分利用 gits 分支功能。
我在本地开发和测试真的那么重要吗?远程测试时,到底如何用git搭建开发环境呢?拥有一个测试仓库是完全错误的思考方式吗?必须有一种方法可以拥有多个遥控器,并让它们签出到推送的最新分支,以便您可以在测试服务器上远程同步本地文件的实例。请帮忙!
最好在本地测试一下。这样你就可以更快地迭代。快速迭代极其重要。您花费在 git 推送和远程连接延迟上的时间加起来,会比设置完整的本地开发环境花费更多。
无论哪种方式,在某个时候您也需要远程测试您的更改。您可以通过测试服务器上的接收后挂钩来完成此操作。这是一种方法。
在测试服务器上:
- 创建您的存储库的裸克隆。我们将此存储库称为“测试”。
- 从测试中克隆,并将其设置为您在浏览器中测试的远程网站
- 在测试存储库中创建一个接收后挂钩,该挂钩将从新收到的分支更新网站
帖子接收钩子脚本:
#!/bin/sh
while read oldrev newrev refname
do
upgrade_sh=./upgrade.sh
if test -e $upgrade_sh; then
upgrade_sh=$(readlink $upgrade_sh || echo $upgrade_sh)
echo calling upgrade script: $upgrade_sh
$upgrade_sh $refname
else
echo NOT calling non-existent upgrade script: $upgrade_sh
fi
done
把它放进去.git/hooks
测试,并使其可执行。
我通常会保留upgrade.sh
在版本控制下我的项目中编写脚本,并从hooks
目录。这upgrade.sh
升级脚本的主要工作是将部署目录重置为您推送的分支:
#!/bin/sh -e
unset GIT_DIR
git checkout -f $1
在大多数情况下,您想要做的不止于此,例如在我的 Django 网站上,我需要重新生成静态内容并向 Apache 发送重新启动信号。
我希望这能帮助您入门。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)