The 28-year-old Lamb was designated for assignment late last month, but the Rangers were able to work out a deal with the Yankees, who lost starting third baseman Aaron Boone to a potential season-ending knee injury.
Lamb batted just .132 in 38 at bats for Texas last year but offers the Yankees some versatility as he can play first base, second, third and the outfield. He is a career .282 hitter in 357 games.
Lamb will have competition for the starting job from Miguel Cairo, Enrique Wilson, Tyler Houston and Erick Almonte. No timetable has been set for Boone's return.
Garcia, 22, was 10-8 with a 2.52 ERA in 25 starts for Class A Battle Creek and Tampa last season.