Thank you @einat.orr for putting the solution. We will try the below solution suggested by you and will get back to you if we have any questions/concerns.
Following our discussion, the solution suggested is:
Each user has 2 branches: A dev and main-replica branch. For example, User1-Main & User1-Dev.
The User will work on the dedicated Dev branch. When User1 wants to "push" things into production, they will Commit AND Merge from User1-Dev to User1-Main.
1. A merge hook (or alternatively, a commit hook that runs only when parent = main) will. Creating the following sequence:
2. Automatically merge from User1-Main to Prod (global Main)
3. Commit changes to all other users local Dev branches ("un"dirty)
4. Merge from Prod to All Users Dev branches