code: def merge(self, base, head, commit_message=github.GithubObject.NotSet):
          
          assert isinstance(base, (str, unicode)), base
          assert isinstance(head, (str, unicode)), head
          assert commit_message is github.GithubObject.NotSet or isinstance(commit_message, (str, unicode)), commit_message
          post_parameters = {
              "base": base,
              "head": head,
          }
          if commit_message is not github.GithubObject.NotSet:
              post_parameters["commit_message"] = commit_message
          headers, data = self._requester.requestJsonAndCheck(
              "POST",
              self.url + "/merges",
              input=post_parameters
          )
          if data is None:
              return None
          else:
              return github.Commit.Commit(self._requester, headers, data, completed=True)
docs: :calls: `POST /repos/:owner/:repo/merges <http://developer.github.com/v3/repos/merging>`_
          :param base: string
          :param head: string
          :param commit_message: string
          :rtype: :class:`github.Commit.Commit`