code: func defaultRemoteRef(g Env, remote string, left *Ref) *Ref {
  	pushMode, _ := g.Get("push.default")
  	switch pushMode {
  	case "", "simple":
  		brRemote, _ := g.Get(fmt.Sprintf("branch.%s.remote", left.Name))
  		if brRemote == remote {
  			// in centralized workflow, work like 'upstream' with an added safety to
  			// refuse to push if the upstream branch’s name is different from the
  			// local one.
  			return trackingRef(g, left)
  		}
  
  		// When pushing to a remote that is different from the remote you normally
  		// pull from, work as current.
  		return left
  	case "upstream", "tracking":
  		// push the current branch back to the branch whose changes are usually
  		// integrated into the current branch
  		return trackingRef(g, left)
  	case "current":
  		// push the current branch to update a branch with the same name on the
  		// receiving end.
  		return left
  	default:
  		tracerx.Printf("WARNING: %q push mode not supported", pushMode)
  		return left
  	}
  }
docs: // defaultRemoteRef returns the remote ref receiving a push based on the current
  // repository config and local ref being pushed.
  //
  // See push.default rules in https://git-scm.com/docs/git-config