开发者

How to completely ignore directories that until now I was tracking under version control using git?

I am using Ruby on Rails, the Capistrano gem and git. I would like to do not put anymore under version control some directories that until now I was tracking.

For my application I have a file system structure like the following:

...
.gitignore
/public/aaa/000/001
/public/aaa/000/002
/public/aaa/000/003
/public/aaa/000/...

To accomplish that I aim, I changed the .gitignore file and added to it the following lines:

# Ignoring "/public/aaa/*" directories
public/aaa/

However, if I check what directories are under version control, I see that those I would like to ignore are still tracked. So, when I deploy with Capistrano to the remote server the content of those directories is still changing.

How can I definitely ignore those directories?


In few words, what I would like to do is to do not change public/aaa directories and files on the remote machine (and, thus, to do not track those with git on my local machine) so that when I dep开发者_开发百科loy with Capistrano those folders (on the remote machine) are untouched.


You'll need to remove them before they'll disappear from source control. They're still part of your git repo, so git is going to continue paying attention to them.

git rm -r --cached public/aaa

The -r tells git to remove the directory (just like rm -r in the console) and --cached tells git to leave the file(s), just remove it from the repo.


You could use git update-index --assume-unchanged <filename>. This will keep the files around, but will no longer track their changes.

You can do this recursively with
find ./folder/ -type f | xargs git update-index --assume-unchanged

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜