The 30-year-old Joe hit .238 with seven home runs and 28 RBIs in 111 games with the Rockies. Joe split time between left field, right field, first base and designated hitter for Colorado last season.
The move reunites Joe with Pittsburgh. The Pirates selected Joe in the 2014 draft before sending him to Atlanta in 2017 for utility player Sean Rodriguez.
The 23-year-old Garcia was a third-round pick by Pittsburgh in the 2020 draft. The right-hander went 4-4 with 3.66 ERA in 25 games (23 starts) at Class A Greensboro in 2022.
To make room for Joe on the roster, the Pirates designated relief pitcher Nick Mears for assignment.
Pirates get OF Connor Joe from Rockies for prospect Nick Garcia