我正在使用带有capistrano的git。
我在本地计算机上的文件夹中初始化了我的项目:
git init
然后我将项目推送到服务器目录
然后我打电话给cap deploy
除了将本地.git文件夹结构以及我的.gitignore和Capfile上传到可公开访问的文件夹之外,部署工作正常。
这是我的gitignore文件:
.DS_Store
uploads/**/*
Capfile
.gitignore
.git/**/*
这似乎没有办法。有什么帮助吗?
谢谢!
编辑:更新的.gitignore文件:
将部署策略更改为导出:
set :deploy_via, :export
这适用于忽略.git文件夹,但下面看到的.gitignore文件的内容仍未考虑
.DS_Store
includes/php/config.php
/uploads
Capfile
.git
编辑2(解决方案):编辑1并结合以下内容完成了诀窍。 在.gitignore文件中列出之前已添加的文件将不断上传。说我有以下.gitignore文件。
.DS_Store
includes/php/config.php
然后我运行了以下命令:
git add .
git commit -a -m 'some commit'
然后我决定添加到我的.gitignore文件中,所以它现在看起来像这样:
.DS_Store
includes/php/config.php
Capfile
然后,我跑了:
git add .
git commit -a -m 'another commit'
现在我看到.DS_Store
和includes/php/config.php
尚未上传,但是Capfile有...这就是我原来的问题中发生的事情。
原因是:我认为.gitignore文件仅在添加时考虑(即git add .
)。如果我已经添加了文件,然后将它们放在.gitignore文件中,它们就已经被添加到项目中了。我需要使用git rm
命令删除它们。
我刚刚用一个新的.git repo重新启动并解决了这个问题,但是你没必要 - 你可以删除你已经添加的任何文件但现在想要用git rm
命令忽略。
我选择的答案帮助我得出了正确的结论,尽管上面详细介绍了完整的解决方案。
答案 0 :(得分:16)
您的部署策略是什么?
您是否有Capistrano设置来排除.git文件?
如果您使用的是set :deploy_via, :copy
,请务必添加以下内容:
set :copy_exclude, [".git/*", ".svn/*", ".DS_Store"]
否则使用应忽略源控制文件夹的set :deploy_via, :export
http://www.capify.org/index.php/Understanding_Deployment_Strategies
答案 1 :(得分:1)
查看similar question,您似乎不需要外卡选择器,只能:{/ p>
uploads/
您需要在Capistrano中通过:git
进行部署并进行导出。它基本上是git clone
,然后只删除.git
目录。
你的问题与Cap真的没什么关系。确保您的.gitignore
文件正常运行。