code: function push(options) {
      var branchOrTag = options.branch || options.tag;
  
      var args = [
        'push',
        options.remote || 'origin',
        branchOrTag || 'HEAD',
        options.force ? '--force' : null
      ];
  
      return git(args)
          .then(silent);
    }
docs: Push the change sets to server
  Executes `git push origin master`
  
  Defaults to "origin", and don't follow configured refspecs
  for the upstream
  
  If both a branch and a tag are specified, the branch takes precedence
  
  @example
  var git = require('gitftw');
  
  git.push(); //the current branch to `origin`
  
  @memberof git
  @type {command}
  
  @param {Object} options The options object. All its properties are {@link Resolvable}
  @param {Resolvable|String} [options.remote="origin"] The remote ref to push to
  @param {Resolvable|String} [options.branch="HEAD"] The branch to push. HEAD will push the
  current branch
  @param {Resolvable|String} [options.tag] The tag to push
  @param {Resolvable|Boolean} [options.force] Force a remote update. Can cause the remote
  repository to lose commits; use it with care. --force flag
  @param {callback} [cb] The execution callback result
  @returns {Promise} Promise Resolves with undefined