Git 和网站开发工作流程
Git and website development workflow
我的询问很具体,我知道它们可能是主观的;我将不胜感激。
这是我之前所做的 git:
- 我运行一个PHP/MYSQL网站
- 我在本地开发并在 WAMP 上测试
- 我 FTP 到暂存站点 dev.mywebsite.com
- 一旦我对所有更改感到满意,我就会 FTP 到实时站点
当我决定开始使用时Git:
- 我在我的托管服务器上初始化了一个裸仓库
- 创建了一个 post-receive 挂钩以部署到 dev.mywebsite.com
- 我将 dev.mywebsite.com 存储库克隆到我的本地开发机器上
- 我测试代码 -> 提交 -> 推送到远程(开发站点)
这是我的问题:
1) 有几个文件需要它们在本地和远程保持不同(这些主要是配置文件)。我对这些文件使用 --assume-unchanged 。但是,我读到 'git reset' 会撤消这些,所以我的第一个问题是:
- 当我从本地推送到远程时,有没有更好的方法永远不会更改配置文件?
2) 我的工作流程以推送到开发站点结束。我不确定如何从那里开始,以最有效和无风险的方式将我的代码部署到实时网站。
*3) 一个额外的问题:我应该将 github/bitbucket/etc.. 整合到我的工作流程中吗?
谢谢
你的方法只适用于非常小的开发组和小项目,不需要复杂的部署。但是:
1) 本地与远程
我通常将配置文件的远程版本保存在存储库中,并在本地用未跟踪的文件覆盖它们。然后配置加载器搜索覆盖但如果存在 none.
则不会失败
2) 开发 + 生产
一个相当简单的方法是保留一个分支用于开发 (dev) 和一个分支用于生产 (master)。或者你想要多少分支,事实上。在钩子中,您可以获得推送分支的名称,并决定将新代码复制到的位置(在最简单的情况下)。
post-更新挂钩可能如下所示:
for arg in "$@"
do
if [ "$arg" == "refs/heads/master" ]
then
DEST="/path/to/production"
git --work-tree=$DEST checkout -f
elif [ "$arg" == "refs/heads/dev" ]
then
DEST="/path/to/dev"
git --work-tree=$DEST checkout -f
fi
done
3) 外部存储库
如果您想备份或与全世界分享,是的,您应该:)
我的询问很具体,我知道它们可能是主观的;我将不胜感激。
这是我之前所做的 git:
- 我运行一个PHP/MYSQL网站
- 我在本地开发并在 WAMP 上测试
- 我 FTP 到暂存站点 dev.mywebsite.com
- 一旦我对所有更改感到满意,我就会 FTP 到实时站点
当我决定开始使用时Git:
- 我在我的托管服务器上初始化了一个裸仓库
- 创建了一个 post-receive 挂钩以部署到 dev.mywebsite.com
- 我将 dev.mywebsite.com 存储库克隆到我的本地开发机器上
- 我测试代码 -> 提交 -> 推送到远程(开发站点)
这是我的问题:
1) 有几个文件需要它们在本地和远程保持不同(这些主要是配置文件)。我对这些文件使用 --assume-unchanged 。但是,我读到 'git reset' 会撤消这些,所以我的第一个问题是: - 当我从本地推送到远程时,有没有更好的方法永远不会更改配置文件?
2) 我的工作流程以推送到开发站点结束。我不确定如何从那里开始,以最有效和无风险的方式将我的代码部署到实时网站。
*3) 一个额外的问题:我应该将 github/bitbucket/etc.. 整合到我的工作流程中吗?
谢谢
你的方法只适用于非常小的开发组和小项目,不需要复杂的部署。但是:
1) 本地与远程
我通常将配置文件的远程版本保存在存储库中,并在本地用未跟踪的文件覆盖它们。然后配置加载器搜索覆盖但如果存在 none.
则不会失败2) 开发 + 生产
一个相当简单的方法是保留一个分支用于开发 (dev) 和一个分支用于生产 (master)。或者你想要多少分支,事实上。在钩子中,您可以获得推送分支的名称,并决定将新代码复制到的位置(在最简单的情况下)。
post-更新挂钩可能如下所示:
for arg in "$@"
do
if [ "$arg" == "refs/heads/master" ]
then
DEST="/path/to/production"
git --work-tree=$DEST checkout -f
elif [ "$arg" == "refs/heads/dev" ]
then
DEST="/path/to/dev"
git --work-tree=$DEST checkout -f
fi
done
3) 外部存储库
如果您想备份或与全世界分享,是的,您应该:)