Garrett spent 2016 with the Single–A Greensboro Grasshoppers where he posted a .213 batting average with six home runs and 16 RBI in 52 games. While with Greensboro, Garrett was involved in a prank with his then-roommate Josh Naylor. As a result of the prank, Garrett suffered a knife cut on his right hand that required three stitches, and was placed on the disabled list.[7] In 2017, he played for the High–A Jupiter Hammerheads where he batted .212 with four home runs and 29 RBI in 94 games.[8]
Garrett returned to Jupiter for the 2018 season, appearing in 64 games and hitting .243/.280/.371 with 5 home runs, 30 RBI, and 14 stolen bases. In 2019, Garrett played in 119 games for the Double–A Jacksonville Jumbo Shrimp, batting .243/.289/.413 with 14 home runs, 63 RBI, and 15 stolen bases. He did not play in a game in 2020 due to the cancellation of the minor league season because of the COVID-19 pandemic.[9] Garrett became a free agent on November 2, 2020.[10]
Arizona Diamondbacks
After his stint with the Marlins, Garrett briefly decided to leave baseball and begin a full-time career in real estate. In 2021 he connected with a former Marlins scout on LinkedIn, who helped him try out and sign a minor league contract with the Arizona Diamondbacks on March 19, 2021.[11] Garrett spent the majority of the season with the Double-A Amarillo Sod Poodles, also playing in two games for the Triple-A Reno Aces. In 103 games for Amarillo, he hit .280/.317/.516 with 25 home runs, 81 RBI, and 17 stolen bases. He was assigned to Reno to begin the 2022 season. In 103 games for the Aces, Garrett batted .275/.332/.568 with career-highs in home runs (28) and RBI (95), as well as 15 stolen bases.
On August 17, 2022, the Diamondbacks selected Garrett to the 40-man roster and promoted him to the major leagues for the first time.[12][13] In his debut against the San Francisco Giants, Garrett recorded his first two career hits as part of a two-double, one-RBI game.[14] On August 28, he hit his first career home run, a solo shot off of Chicago White Sox starter Dylan Cease.[15] He appeared in 27 games for Arizona in his rookie campaign, hitting .276/.309/.540 with 4 home runs, 10 RBI, and 3 stolen bases. On November 15, 2022, he was designated for assignment.[16] On November 18, Garrett was non–tendered by the Diamondbacks and became a free agent.[17]
Washington Nationals
On November 29, 2022, Garrett signed a major league deal with the Washington Nationals.[18] Garrett was optioned to the Triple-A Rochester Red Wings to begin the 2023 season.[19] He was called up to the big league club soon after on April 2, 2023, after Corey Dickerson was placed on the injured list.[20] In an August 23 game against the New York Yankees, Garrett landed awkwardly against the outfield wall while attempting to catch a DJ LeMahieu fly ball.[21] The next day, he was diagnosed with a fractured left fibula.[22] On August 26, Garrett was placed on the 60–day injured list, ending his season. In 89 games for Washington, Garrett batted .269/.343/.457 with 9 home runs and 40 RBI.[23]
On September 27, 2024, Garrett played his first game for the Nationals since his fractured fibula. In his first at-bat, Garrett hit a two-run home run off of Philadelphia Phillies pitcher Ranger Suárez to increase the Nationals' lead to 3–0. Garrett subsequently added a single, double, and walk in three of his following four plate appearances, with three RBI, in a 9–1 Nationals victory.[24]