> How about adding a new `GitLink` type. This type would derive from `GitObject` and would be returned as such.

21696b8

> 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

Please have a look for yourself, but at a glance I didn't see anywhere that we publicly accept `GitObject` where we have special cases that depend on the type provided, presumably allowing libgit2 to determine which object types are acceptable.

It would be good to support `TreeDefinition.Add(string targetTreeEntryPath, GitLink link)` eventually.