我想做以下事情:
- 创建一个本地 git repo,我们称之为
~/my-awesome-app
- 在我的网站上创建一个文件夹,我们称之为
mysite.com/my-awesome-app
- 能够将我所做的任何更改推
~/my-awesome-app
送到mysite.com/my-awesome-app
有人可以解释我将如何设置吗?
我想做以下事情:
~/my-awesome-app
mysite.com/my-awesome-app
~/my-awesome-app
送到mysite.com/my-awesome-app
有人可以解释我将如何设置吗?
您可以创建mysite.com/my-awesome-app
一个 git 存储库并将receive.denyCurrentBranch
其设置为ignore
允许推送到那里,但这是有风险的。
如果我想这样做,我会在我的服务器上创建一个裸存储库,我可以将我的代码推送到该存储库中,然后更改update
挂钩以将最新的树导出到mysite.com/my-awesome-app
(并可选择重新启动应用程序)。这样,存储库和部署的副本是两个不同的东西。
您的远程服务器上的~/mysite.com是否有 git存储库?如果是这样,就像James和Noufal指出的那样,要小心,这种嵌套可能会有问题。
考虑以下解决方案,无论它是否嵌套都应该有效:
在远程服务器上,从 shell:
mkdir ~/my-awesome-app/
ln -s ~/my-awesome-app/ ~/mysite.com/my-awesome-app
echo /my-awesome-app >> ~/mysite.com/.gitignore
当从本地my-awesome-app分支发布提交到远程服务器时,我会使用路径 ~/my-awesome-app作为上传/相对目录,而不是 ~/mysite.com/my-awesome-app。这应该使您免于尝试提升文件结构以寻找 git repos 的一些厚颜无耻的 IDE。
最后,我会考虑在 ~/my-awesome-app 添加一个远程仓库,而不仅仅是通过 sftp/ftp 或 ssh 发送文件而没有仓库。这使您可以保持高度稳定的生产环境,同时仍然能够使用可扩展的gitflow方法将修补程序重新合并到本地开发副本中。
Vincent Driessen在这里对 gitflow 进行了很好的讨论。
更新:符号链接的替代方法
您可以更改站点配置,而不是符号链接(可能会被删除):
# creates the alias
<IfModule mod_alias.c>
Alias /my-awesome-app /path/to/my-awesome-app/
</IfModule>
# allows people to access the path
<Directory /path/to/my-awesome-app/>
Order allow,deny
Allow from all
</Directory>
然后,当您进行推送时,您应该使用 /path/to/my-awesome-app/。为了安全起见,我仍然会在 ~/mysite.com/.gitignore 中保留/my-awesome-app行,但没有符号链接,git 绝不应该在操作 ~/mysite 时偶然发现 my-awesome-app 存储库.com/。