The 19-year-old has become the eighth signing of the summer for Darren Ferguson's side.
Left back Garrett made his Bolton debut in April when he came off the bench during the clash with Cardiff City following the sending off of Niall Maher.
He went on to start their final two games of the season after relegation to League One was confirmed.
The Lincoln-born defender joined Bolton at the age of 16 from Lincoln City's youth set-up.
Garrett follows Mathieu Baudry, John Marquis, Ross Etheridge, Matty Blair, Tommy Rowe, Gary McSheffrey and Joe Wright through the entrance door at Rovers this summer.