Faits: A. Par jugement du 9 mai 2012, le Tribunal correctionnel de l'arrondissement de la Broye et du Nord vaudois a notamment condamné X._ pour infraction grave à la loi fédérale sur les stupéfiants à une peine privative de liberté de trente-six mois, dont 12 mois ferme et 24 mois avec sursis pendant trois ans. B. Statuant sur appel du Ministère public vaudois, la Cour d'appel pénale du Tribunal cantonal vaudois a réformé le jugement de première instance et augmenté la peine privative de liberté à quatre ans et demi. En résumé, elle a retenu les faits suivants: Au début novembre 2009 à Bâle, X._ a acheté 700 grammes d'héroïne et 2 kilos de produit de coupage pour un montant de 14'000 fr., qui lui avaient été avancés. A Bâle, entre la fin du mois de novembre et le 9 décembre 2009, il a obtenu 200 grammes d'héroïne pour un montant de 5'000 fr. auprès de A._. Quelques jours plus tard, il a rendu la marchandise et récupéré son argent, car la drogue était de mauvaise qualité. Sur le trajet Corcelettes-Yverdon le 25 novembre 2009, il a facilité le transport de 50 grammes d'héroïne en dépassant volontairement B._ afin d'ouvrir la voie et de sécuriser ce convoi. Il n'a rien reçu pour ce service. A Yverdon ou à Yvonand, au début décembre 2009, il a vendu 50 grammes d'héroïne à C._ pour 2'000 francs. A Härkingen le 9 décembre 2009, jour de son arrestation, il s'est fait remettre entre 450 et 500 grammes d'héroïne et un kilo de produit de coupage par D._. Il a ramené cette marchandise avec sa voiture et l'a déposée dans son appartement clandestin à Corcelettes. Elle lui avait été avancée. A Corcelettes le 9 décembre 2009, lors de la fouille de l'appartement clandestin de X._, la police a découvert 846 grammes d'héroïne et 1'440 grammes de produit de coupage. Sur cette quantité, 599 grammes d'héroïne et 1'020 grammes de produit de coupage appartenaient à X._. Ils se trouvaient sous son lit. Le reste appartenait à B._ et se trouvait dans un coffre. L'analyse de la drogue par l'Institut de police scientifique de l'université de Lausanne a révélé des taux de pureté oscillant entre 6,4 % et 37,6 %. C. Contre ce dernier jugement, X._ dépose un recours en matière pénale devant le Tribunal fédéral. Il conclut à la réforme du jugement attaqué en ce sens que la peine prononcée soit de trente-six mois, dont 12 mois ferme et 24 mois avec sursis pendant trois ans; à titre subsidiaire, il conclut à l'annulation de l'arrêt attaqué et au renvoi de la cause à l'autorité précédente pour nouveau jugement. En outre, il sollicite l'assistance judiciaire. Il n'a pas été ordonné d'échange d'écritures.