Hello,
I'm pretty new to Git (used to work with SVN) so I might be using it the wrong way but here is the issue:
- I'm making a video-game using Unity3D and the project is subject to teamwork over Git
- The project contains, at some point, platform-specific files/folders (we use Plugins, scripts, meta files - generated by Unity, which are different from a platform to another - Android, iOS)
- We would like to have a "clean" branch which will not contains platform-specific files (this way, if we need to handle a new platform - let's say Windows Phone - we can create a new branch from the clean one without having to remove all the unwanted files)
- We then want one branch for each platform
- Workers never work directly on the clean branch, only on platform-branches
- Every platform-branches will be able to merge FROM and TO the clean branch (in order to keep up-to-date the common stuff)
- That way, the clean branch works as a "filter" that make sure no platform-specific files get out of their branch
Problem is, I can't figure out how to ignore specific files for a branch but not another!
Ex: I have added a new plugin in the Plugins/Android folder in the Android branch. But I also have fixed some nasty issue in the common part. I want to push and merge to the clean branch so when iOS workers will pull from the clean branch they will have the fix but not the plugin. Android workers need to have the plugin thought. I would like the Plugins/Android folder to be ignored (not pushed) when I will merge toward the clean branch, but actually pushed when I'll push toward the Android remote branch.
From my search, solutions are either to manually remove files on the clean branch after pushing (waste of time and prone to mistakes) or use a .gitignore. But a .gitignore seems to work across the whole repository so my platform-branches will ignore them too.
Am I missing something ? Please enlighten me on this !