我正在使用Ruby on Rails, Capistrano gem和git。我不想再把版本控制下的一些目录,直到现在我一直在跟踪。
对于我的应用程序,我有如下的文件系统结构:
...
.gitignore
/public/aaa/000/001
/public/aaa/000/002
/public/aaa/000/003
/public/aaa/000/...
为了实现我的目标,我更改了.gitignore
文件并添加了以下行:
# Ignoring "/public/aaa/*" directories
public/aaa/
然而,如果我检查哪些目录处于版本控制之下,我看到那些我想忽略的目录仍然被跟踪。因此,当我将Capistrano部署到远程服务器时,这些目录的内容仍然在变化。
我怎样才能完全忽略这些目录?
简而言之,我想做的是不改变远程机器上的public/aaa
目录和文件(因此,不跟踪我本地机器上的git),这样当我使用Capistrano部署时,这些文件夹(在远程机器上)是不受影响的
您需要在它们从源代码管理中消失之前删除它们。它们仍然是git仓库的一部分,所以git会继续关注它们。
git rm -r --cached public/aaa
-r
告诉git删除目录(就像控制台的rm -r
一样),--cached
告诉git留下文件,只是从repo中删除它。
您可以使用git update-index --assume-unchanged <filename>
。这将保留文件,但不再跟踪它们的更改。
你可以用
递归地做到这一点find ./folder/ -type f | xargs git update-index --assume-unchanged