def create_git_commit(self, message, tree, parents, author=github.GithubObject.NotSet, committer=github.GithubObject.NotSet):
assert isinstance(message, (str, unicode)), message<EOL>assert isinstance(tree, github.GitTree.GitTree), tree<EOL>assert all(isinstance(element, github.GitCommit.GitCommit) for element in parents), parents<EOL>assert author is github.GithubObject.NotSet or isinstance(author, github.InputGitAuthor), author<EOL>assert committer is github.GithubObject.NotSet or isinstance(committer, github.InputGitAuthor), committer<EOL>post_parameters = {<EOL>"<STR_LIT:message>": message,<EOL>"<STR_LIT>": tree._identity,<EOL>"<STR_LIT>": [element._identity for element in parents],<EOL>}<EOL>if author is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = author._identity<EOL><DEDENT>if committer is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = committer._identity<EOL><DEDENT>headers, data = self._requester.requestJsonAndCheck(<EOL>"<STR_LIT:POST>",<EOL>self.url + "<STR_LIT>",<EOL>input=post_parameters<EOL>)<EOL>return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)<EOL>
: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`