The 26-year-old agreed a three-year deal with the Robins after 94 games and 18 goals for the Edinburgh side.
He told the club website: "This is a big step up for me and I need to build myself a new reputation.
"It is a good league up in Scotland but it is an even stronger one, in my opinion, down here. "There are some good players at this club already and I am going to have to work hard and fight for my place.
"It was a football decision to move down here. It is an exciting time for Bristol City, they are a club on the up which is good for me and my international ambitions."