Heading into college, Garrett was a four-star basketball recruit, ranked 68th in the country, and the 21st best small forward. Garrett committed to attend St. John's University to play college basketball for the St. John's Red Storm men's basketball team. Garrett was ruled ineligible to play for the college basketball team for the fall semester of his freshman year, in the 2011–12 season, due to academic reasons. He instead spent the fall semester at Bridgton Academy in Bridgton, Maine where he participated in the fall baseball program. He was declared eligible in December. As a freshman, Garrett played 26.9 minutes per game. After the basketball season, Garrett played baseball for the Arizona Reds of the Rookie-levelArizona League and the Billings Mustangs of the Rookie-level Pioneer League, pitching to a 4.05 earned run average with 18 strikeouts and 13 walks in 20 innings pitched. As a sophomore, Garrett started 11 games, averaging 5.4 points per game and 4.3 rebounds per game in 20.1 minutes per game. After the 2012–13 college basketball season, Garrett announced that he was leaving St. John's, with the intention of transferring to another college basketball team. He transferred to California State University, Northridge, and sat out the 2013–14 season due to NCAA transfer rules. After "redshirting" his first year, Garrett withdrew from the Matadors to pursue a pro baseball career.
Professional career
Garrett began the 2013 baseball season with Billings, but was promoted to the Dayton Dragons of the Class AMidwest League in July. He finished the season with a 5.15 ERA, 32 strikeouts, and 26 walks in innings. He returned to Dayton for the start of the 2014 season. In August 2014, Garrett decided to quit basketball and withdraw from Cal-State Northridge in order to focus on baseball. He had a 7–8 record and a 3.65 ERA in 27 games started, and the Reds added him to their 40-man roster after the season. He began the 2015 season with the Daytona Tortugas of the Class A-AdvancedFlorida State League, and was chosen to represent the Reds at the 2015 All-Star Futures Game. Garrett finished the 2015 season with a 2.44 ERA and 133 strikeouts for Daytona, and with Jacob Faria, was named the Co-FSL Pitcher of the Year. Garrett opened the 2016 season with the Pensacola Blue Wahoos of the Class AASouthern League. The Reds promoted him to the Louisville Bats of the Class AAAInternational League in June. He was named to appear in the 2016 All-Star Futures Game. He finished 2016 with a 7-8 record and a 2.55 ERA. Garrett made the Reds' Opening Day roster in 2017. In his Major league debut on April 7 against the St. Louis Cardinals, Garrett went six shutout innings, giving up just two hits and earning the win in the Reds 2-0 victory over the Cardinals. On May 7, 2017 Garrett was optioned down to Reds AAA affiliate Louisville Bats, RHP Barrett Astin was recalled. On May 25, 2017, Garrett was placed on the 10-day disabled list due to right hip inflammation. Garrett was optioned and recalled multiple times during the season. In 14 starts for Louisville he was 2-4 with a 5.72 ERA, and in 16 games for Cincinnati, he compiled a 3-8 record and 7.39 ERA. Garrett began the 2018 season in the Cincinnati bullpen. In 66 games, he was 1-2 with 71 strikeouts in 63 innings. In an April 7, 2019 game against the Pittsburgh Pirates, Garrett was ejected after his role in a bench clearing incident involving Chris Archer, Derek Dietrich, Yasiel Puig, David Bell, Keone Kela, and Felipe Vázquez. Over 3 months later, on July 30 Garrett was once again involved in a bench clearing incident, charging the Pirates dugout and throwing punches at players in the dugout. Garrett was ejected along with Yasiel Puig, Francisco Cervelli, Kyle Crick, Chris Archer, and Trevor Williams. This followed after David Bell was ejected in the bottom of the 8th inning by Larry Vanover for arguing balls and strikes and later in the top of the 9th inning where Reds relief pitcher Jared Hughes and bench coach Freddie Benavides were ejected in the ninth for hitting Starling Marte with his first pitch. On August 1, 2019, Garrett was suspended for 8 games.