In my projects and internships, I've extensively used Git and GitHub for version control to manage code changes efficiently. I typically start by creating a new branch for each feature or bug fix to keep the main branch stable. This allows me to work on multiple features simultaneously without affecting the main codebase. When it comes to managing merge conflicts, I make it a point to pull the latest changes from the main branch into my feature branch regularly. This helps in minimizing conflicts. If conflicts do arise, I carefully review the conflicting files, understand the changes made by others, and resolve them by merging the best parts of both versions. After resolving conflicts, I thoroughly test the code to ensure everything works as expected before merging it back into the main branch. This approach not only helps in maintaining a clean codebase but also facilitates collaboration with team members.