The fee is undisclosed, but media reports had suggested the Robins were willing to pay £250,000 for his services.
Byfield has netted 84 times in 320 career appearances for various clubs including Gillingham, Rotherham and Walsall.
"Bristol City is a massive club and they are a team in the Championship," he said.
"They were very successful last season and I want to be apart of that success.
"I'm very excited about getting started with the club. In fact it's the most excited I've felt about any move."