I have a project hosted on a git environment and i have to generate a white label project based on it. I'm much more experienced with Microsoft's TFVC (Team Foundation Version Control) and i know easily how i'd do that using it, but i'm unsure on how i should proceed using git.
In TFVC i would create a branch 'A' from the main project, erase any customer specific content and it's done, i have a generic version. After that i would remove the parenting, create a new branch 'B' from 'A' and then perform a baseles merge from the main project to 'B' so now i have the hierarchy i need and the newly created branch contains all the customer specific changes. As a new customer arrives, i create a branch 'C' from the generic one 'A' and apply any new changes required.
If a new feature is generic and useful enough for all clients, it will be developed in 'A' and then a merge will be done to 'B', 'C', etc. This is the best scenario since all clients will be allowed to ask for different features and toggling them on and off using a single repository, in my opinion, is far worse than maintaining different samples of code that originated from a common one. The same feature also can behave differently in different clients, and i don't want that the application has to check it at runtime.
With the scenario explained, how do i do that using Git? Also, can it be done using forks instead of branches using git?