Outfielder Melky Cabrera and the San Francisco Giants have agreed to a $6 million, one-year contract and avoided salary arbitration, a person familiar with the agreement tells The Associated Press.