code: def create_git_commit(self, message, tree, parents, author=github.GithubObject.NotSet, committer=github.GithubObject.NotSet):
          
          assert isinstance(message, (str, unicode)), message
          assert isinstance(tree, github.GitTree.GitTree), tree
          assert all(isinstance(element, github.GitCommit.GitCommit) for element in parents), parents
          assert author is github.GithubObject.NotSet or isinstance(author, github.InputGitAuthor), author
          assert committer is github.GithubObject.NotSet or isinstance(committer, github.InputGitAuthor), committer
          post_parameters = {
              "message": message,
              "tree": tree._identity,
              "parents": [element._identity for element in parents],
          }
          if author is not github.GithubObject.NotSet:
              post_parameters["author"] = author._identity
          if committer is not github.GithubObject.NotSet:
              post_parameters["committer"] = committer._identity
          headers, data = self._requester.requestJsonAndCheck(
              "POST",
              self.url + "/git/commits",
              input=post_parameters
          )
          return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)
docs: :calls: `POST /repos/:owner/:repo/git/commits <http://developer.github.com/v3/git/commits>`_
          :param message: string
          :param tree: :class:`github.GitTree.GitTree`
          :param parents: list of :class:`github.GitCommit.GitCommit`
          :param author: :class:`github.InputGitAuthor.InputGitAuthor`
          :param committer: :class:`github.InputGitAuthor.InputGitAuthor`
          :rtype: :class:`github.GitCommit.GitCommit`