When switching branches with uncommitted changes you are usually asked whether you want a "smart checkout" or a "forced checkout". There should probably be a one time warning that force checkout discards all your changes. But sometimes when you select "smart checkout" something might go wrong. I have had this case several times. There is no option to abort the check out and I have lost all my changes at least 5 times due to things like this. Luckily I was able to restore them using local history but still, I wasted hours on something that is easily prevented. I think there should be a one time warning (With a "do not show this again option" so the user can chose to keep the warning every time), which warns you before every action that discards all your uncommitted changes.