def create_git_release(self, tag, name, message, draft=False, prerelease=False, target_commitish=github.GithubObject.NotSet):
assert isinstance(tag, (str, unicode)), tag<EOL>assert isinstance(name, (str, unicode)), name<EOL>assert isinstance(message, (str, unicode)), message<EOL>assert isinstance(draft, bool), draft<EOL>assert isinstance(prerelease, bool), prerelease<EOL>assert target_commitish is github.GithubObject.NotSet or isinstance(target_commitish, (str, unicode, github.Branch.Branch, github.Commit.Commit, github.GitCommit.GitCommit)), target_commitish<EOL>post_parameters = {<EOL>"<STR_LIT>": tag,<EOL>"<STR_LIT:name>": name,<EOL>"<STR_LIT:body>": message,<EOL>"<STR_LIT>": draft,<EOL>"<STR_LIT>": prerelease,<EOL>}<EOL>if isinstance(target_commitish, (str, unicode)):<EOL><INDENT>post_parameters["<STR_LIT>"] = target_commitish<EOL><DEDENT>elif isinstance(target_commitish, github.Branch.Branch):<EOL><INDENT>post_parameters["<STR_LIT>"] = target_commitish.name<EOL><DEDENT>elif isinstance(target_commitish, (github.Commit.Commit, github.GitCommit.GitCommit)):<EOL><INDENT>post_parameters["<STR_LIT>"] = target_commitish.sha<EOL><DEDENT>headers, data = self._requester.requestJsonAndCheck(<EOL>"<STR_LIT:POST>",<EOL>self.url + "<STR_LIT>",<EOL>input=post_parameters<EOL>)<EOL>return github.GitRelease.GitRelease(self._requester, headers, data, completed=True)<EOL>
:calls: `POST /repos/:owner/:repo/releases <http://developer.github.com/v3/repos/releases>`_
:param tag: string
:param name: string
:param message: string
:param draft: bool
:param prerelease: bool
:param target_commitish: string or :class:`github.Branch.Branch` or :class:`github.Commit.Commit` or :class:`github.GitCommit.GitCommit`
:rtype: :class:`github.GitRelease.GitRelease`