When doing research I often write a single script and then run it multiple times, each time tweaking some part of the script or adjusting constants. I need to keep track of all of these versions to be able to reproduce the results.
Currently I am making sure that before each experiment, the current state of the code is commited to git and I tag it with experiment's name. If I need to expand on past experiment I branch out from a commit in history.
I would appreciate some insights from other people on how they handle this.
I am unhappy to run experiments without forming some kind of map to help me navigate the various choices. Most runs end up forgotten, and that's very inefficient.