1. A computer-implemented method for automatically modifying software code in an integrated development environment, the method comprising: retrieving, by at least one processor, software code stored in at least one file on a non-transitory computer readable medium, the at least one file representing a branch point; analyzing, by the at least one processor, the retrieved software code; displaying, by the at least one processor, to a user an indication that the software code can be automatically modified; receiving, by the at least one processor, a selection from the user to automatically modify the software code; performing a first modification, by the at least one processor, of the software code without modifying the at least one file, the first modification representing a first branch, the first branch branching off the branch point; displaying, by the at least one processor, to the user a second indication that the first modified software code can be automatically further modified; receiving, by the at least one processor, a second selection from the user to automatically further modify the first modified software code; performing a second modification, by the at least one processor, of the first modified software code according to a plurality of alternate automatic modifications; generating, by the at least one processor, a plurality of further modified software code corresponding to the alternate automatic modifications, the further modified software code generated without modifying the at least one file; representing, by the at least one processor, the plurality of further modified software code as a second branch, the second branch branching off the first branch; performing a third modification, by the at least one processor, of the software code without modifying the at least one file, the third modification representing a third branch, the third branch branching off the branch point; displaying, by the at least one processor, multiple versions of the software code, the display comprising: displaying the multiple versions of the software code as a plurality of branches in a tree structure, the plurality of branches including the first branch, the second branch, and the third branch, displaying the first branch as a branch originating from the branch point, displaying the second branch as a sub-branch originating from the first branch, and displaying the third branch as another branch originating from the branch point; reverting, by the at least one processor, from the plurality of further modified software code to the software code based on an indication that the reverting should occur, the indication received on behalf of the user; and removing, by the at least one processor, the second branch from the display as a result of the indication that the reverting should occur.