This seems off. If the other model's base commit is 'null', we only check if we ourselves has a base commit is 'null'? The locations and/or remote commits of the two models may still differ from each other, no?

The location, remote commit, and base commit are all taken consideration in the hashCode() implementation so it seems to me that all three should also should be factored into the implementation of equals(Object).