code: func (s *GitService) CreateTree(ctx context.Context, owner string, repo string, baseTree string, entries []TreeEntry) (*Tree, *Response, error) {
  	u := fmt.Sprintf("repos/%v/%v/git/trees", owner, repo)
  
  	body := &createTree{
  		BaseTree: baseTree,
  		Entries:  entries,
  	}
  	req, err := s.client.NewRequest("POST", u, body)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	t := new(Tree)
  	resp, err := s.client.Do(ctx, req, t)
  	if err != nil {
  		return nil, resp, err
  	}
  
  	return t, resp, nil
  }
docs: // CreateTree creates a new tree in a repository. If both a tree and a nested
  // path modifying that tree are specified, it will overwrite the contents of
  // that tree with the new path contents and write a new tree out.
  //
  // GitHub API docs: https://developer.github.com/v3/git/trees/#create-a-tree