I agree that we should not throw in this case. However something bothers me.

Technically, this will allow the creation (few lines below) of a concrete `Commit` which won't mean anything in the super-project as it technically doesn't exist in this context.

How about adding a new `GitLink` type. This type would derive from `GitObject` and would be returned as such.

Provided we go down this road,I can think of some additional topics to cope with
 - Inspect  any public method accepting a `GitObject` as a parameter and determine how they should behave when being passed a `GitLink`.
 - Decide if the `GitLink` type should be internal-only or public

Thoughts?