I have a remote repo in which I want to commit certain files (the compiled files to deploy them on a cloud computing platform), but I don't want to deploy them on github...
is there some way to have to different .gitignore files, one for each remote?
I figure out a way to do this.
In my case, I needed to synchronize the project with heroku and github (as public repo).
But some files with private information were not interesting to be shared in a public repository
Usually a simple project would have the following folder structure
What I did was add one more level, and in it create another git repository, with a gitignore that would omit some files from my project.
So this is not a git repository with two remote repositories with different gitignores.
There are two different repositories.
On the innermost I only exclude the files generated by the IDE and some files generated at runtime.
At the outermost level, I exclude all files that can not be make public.
This doesn't really make sense in git's model. Commits contain sets of files; all .gitignore files do is tell the UI not to automatically add files matching certain patterns. What this would effectively mean is to have parallel sets of commits that are almost the same, but containing only a subset of the files.
It'd be possible to do this with a branching scheme, where you have a "deployment" branch that splits off of master and is the same but contains the additional compiled files. This could even be automated with git hooks to automatically compile the files and add them to the repo. I'm envisioning a structure like this:
i.e. every time a certain server gets a new commit on master, it builds the project, adds the built files to a new commit from D, and commits that to the deployment branch -- which then doesn't have to be pushed to github.
An automated solution to the methods mentioned here:
Another option is git submodules.
This can be useful if, for instance, you want your code and documentation to be in two different repos with independent access control, etc. So you'd have 3 total repos, a submodule repo for docs, another for code, and the "master" (not a git submodule) repo containing both (for pypi upload, perhaps). This is a decent way to organize a CS textbook project. Both projects can proceed merrily ahead independently and sync up at major releases, driven by the master repo maintainer.