In his freshman season, Garrett started four games and played in all 32 games; he averaged 6.3 points and was second on the team in assists with 91. In his sophomore season, he was one of the Big 12's top playmakers, ranking third in the league and 36th nationally in assists ; his 161 assists ranked 16th on ISU's single-season assist chart. He was also one of two players to start all 32 games and was second on the team in scoring and averaged 3.3 rebounds per game. In his junior season, he was one of the Big 12 Conference's best point guards for the second straight year, ranking third in the league and 38th nationally in assists ; he recorded 164 assists to rank 15th on ISU's single-season assist chart. He was one of three players to start all 32 games, averaging 9.2 points and 2.5 rebounds per game. In his senior season, he produced one of the best seasons at point guard in Iowa State history and was one of the nation's most improved players. He earned All-Big 12 second team honors and USBWA All-District VI accolades while averaging 17.3 points, 6.1 assists and 1.7 steals per game. He led the Big 12 in assists, the first Cyclone to top the league in assists since Jacy Holloway in 1996–97. Garrett graduated from Iowa State in May 2011 with a Bachelor of Liberal Studies degree.
College statistics
Professional career
2011–12 season
Garrett went undrafted in the 2011 NBA draft. On July 23, 2011, he signed a one-year deal with KK Zagreb of Croatia. On November 7, 2011, he parted ways with Zagreb. The next day, he signed with JSF Nanterre of France for the rest of the 2011–12 season.
2012–13 season
In July 2012, Garrett joined Phoenix Suns for the 2012 NBA Summer League. On October 1, 2012, he signed with the Suns. On November 5, 2012, Garrett made his NBA debut recording 2 points, 2 assists and 1 steal in a 99–124 loss to the Miami Heat. During the 2012–13 season, he had multiple assignments with the Bakersfield Jam of the NBA D-League.
2013–14 season
In July 2013, Garrett re-joined the Phoenix Suns for the 2013 NBA Summer League. On September 27, 2013, he signed with the Oklahoma City Thunder. However, he was later waived by the Thunder on October 25, 2013. On October 31, 2013, he was acquired by the Tulsa 66ers as an affiliate player. The next day, he was traded to the Iowa Energy. On November 13, 2013, he signed with the Utah Jazz.
2014–15 season
On July 10, 2014, Garrett was traded to the Toronto Raptors in exchange for Steve Novak and a 2017 second round pick. On July 19, 2014, he was waived by the Raptors. On September 24, 2014, he signed with the Portland Trail Blazers. However, he was later waived by the Trail Blazers on October 25, 2014. On November 4, 2014, Garrett was reacquired by the Iowa Energy. On February 12, 2015, he was named to the Futures All-Star team for the 2015 NBA D-League All-Star Game as a replacement for Lorenzo Brown. On February 26, he was traded to the Grand Rapids Drive in exchange for Willie Reed.
In July 2018, Garrett signed with Turkish club Tofaş, where he finished third in the Turkish league during the 2018–19 season. Meanwhile, he also personally averaged 18.4 points, 2.8 rebounds, 6.1 assists and 0.7 steals per contest, while shooting 43.5% from beyond the arc, in the team's EuroCup games.
2020–21 season
After a long hiatus due to personal injuries and the COVID-19 pandemic, Garrett signed with EuroCup club Promitheas Patras of the Greek Basket League, on July 31, 2020.