Best Approach for Developing Improvements on Existing Code

What is the best approach for enhancing (my own) existing SmartApps / Device Handlers without impacting my “production” environment from and IDE perspective? I am familiar with GitHub branches and merging. From what I can see ST doesn’t support using multiple branches on the same file. If I have an app called “App1”, should I just make a copy called “App1-new” modify it, test it, commit it to a different branch. Then when I am ready to switch over, merge the code in GitHub and update “App1” with the new code?

I know this is probably the worst way, but I make a copy with a different name, install it, and make changes right from the ide…

That way I can immediately test what I’m doing.

I’m sure there is a much better way, I just haven’t taken the time to find it yet.

That is kind of what I do. I much prefer to use physical devices for testing than the simulator. If it were easier I wouldn’t always break my important stuff…