O'Donnell has agreed a two-and-a-half-year contract with the Robins.
The 27-year-old has made four appearances for the Championship club since joining in January as cover for injured City number one Frank Fielding.
O'Donnell featured in 12 games in all competitions for League One side Wigan, having arrived on a free transfer from Walsall in July.
Find all the latest football transfers on our dedicated page.
Bristol City have signed on-loan Wigan goalkeeper Richard O'Donnell to a permanent deal for an undisclosed fee.