As far as the "cattle" and "parent" are concerned, in prior versions of Godot it was fine to do something like this:
var cattle do something with cattle #code considers this scope to be cattle_1 for cattle in allcattle: do something with cattle #code considers this scope to be cattle_2
But in the current version of Godot, they simplified the code by preventing multiple local scope definitions of a single variable name. For "cattle" it would be fine to delete "var cattle" since it was unused, but both "parent" were used so renaming was necessary, though you missed 4 cases of parent within the "for y in ['father','mother']:" loops(2 in first, 1 in each of the last 2).
I use a diff utility to compare files which makes it far easier to see what has changed. TortoiseGit includes a graphical diff utility so I use that, but there are other options.