The other half of the issue is that git's commands don't follow the abstraction. If each command mapped to a single dag operation, it might make more sense. But they don't (revert).
Having commands for each DAG operation will just add more complexity and expose a structure which you shouldn't be handling manually.