繁体   English   中英

Capistrano上传.git目录

[英]Capistrano uploads the .git directory

我正在使用带有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_Storeincludes/php/config.php尚未上传,但是Capfile有...这就是我原来的问题中发生的事情。 原因是:我认为只有在添加时才会考虑.gitignore文件(即git add . )。 如果我已经添加了文件,然后将它们放在.gitignore文件中,它们就已经被添加到项目中了。 我需要使用git rm命令删除它们。 我刚刚用一个新的.git repo重新启动并且解决了这个问题,但是你没必要 - 你可以删除你已添加的任何文件,但现在想用git rm命令忽略。

我选择了帮助我得出正确结论的答案,尽管上面详细介绍了完整的解决方案。

您的部署策略是什么?

你有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

看一个类似的问题 ,看起来你不需要外卡选择器,可以只有:

uploads/

你需要在Capistrano中通过:git进行部署并进行导出。 它本质上是一个git clone ,然后只是删除.git目录。

你的问题与Cap真的没什么关系。 确保您的.gitignore文件正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM