我正在使用Ruby on Rails,Capistrano gem和git。很久以前我初始化了git,在.gitignore
文件中我说了以下内容:
.bundle
db/*.sqlite3
log/*.log
tmp/
有一天,我在RoR应用程序的/public
目录中创建了一个子目录:/public/users/...
。现在在后一个目录中,我有以下文件系统结构:
/public/users/001/file1.png
/public/users/001/file2.png
/public/users/001/file3.png
...
/public/users/002/file1.png
/public/users/002/file2.png
/public/users/002/file3.png
...
...
此时git正在跟踪/public
目录中的所有文件,包括/public/users/
内的所有目录和文件。因此,当我使用Capistrano进行部署时,所有这些都将在远程计算机上进行更新。
我想要做的是不再跟踪public/users
目录,子目录和文件(在我的本地计算机上),以便在远程计算机上不会更新。也就是说,我希望当我使用Capistrano进行部署时,所有与public/users
(在远程计算机上)相关的内容都不会受到影响。
我该怎么做?
P.S。:我读了很多其他的问题和答案(例如:1,2,......)但是它们似乎都不适合我。
我几乎可以肯定我必须在.gitignore
文件中添加以下文本行:
# Ignoring "public/users/" directories, sub-directories and files
public/users/
然后(如果上面的代码有效)我应该做什么?
答案 0 :(得分:1)
尝试将所有与用户相关的文件放入一个文件夹,比如系统
你可以把public/system/*.*
放在git中忽略..
那你的目标结构将是:
public
->404.html
->js.../..,..,..
->css ../..,..,..
->system
->users
->1/something
->2/something
->some-other-user-related-info
为什么还需要将开发相关文件放入git然后再放入服务器?没有意义..所以不要这样做..它将无缘无故地增加你的回购尺寸。
由于您使用的是capistrano,因此您的服务器目录结构将如下所示:
APP
->Current
->releases
->shared
您的公共/系统文件夹将继续指向共享/系统
案例1:用户/未提交的文件 将所有与用户相关的文件放在.gitignore
中案例2:如果提交了文件 执行git delete然后提交 然后将其添加到.git ignore