Faits :
A.
Par jugement du 16 janvier 2017, le Tribunal du IIIème arrondissement pour les districts de Martigny et St-Maurice a reconnu X._ coupable d'agression (art. 134 CP) et l'a condamné à une peine privative de liberté de 22 mois.
Par ce même jugement, le tribunal de première instance a également reconnu Y._ coupable d'agression (art. 134 CP) et l'a soumis à un traitement ambulatoire.
B.
Par jugement du 25 février 2019, le Tribunal cantonal du canton du Valais a notamment rejeté l'appel formé par X._.
En substance, l'arrêt se fonde sur les faits suivants:
Alors qu'ils se dirigeaient en direction du centre commercial du A._ après avoir passé la soirée à B._, le 8 octobre 2015 vers 00h30, C.C._ et D.C._ sont passés à la hauteur d'une bande formée de quatre ou cinq individus. Y._, X._ et E._ faisaient notamment partie de ce groupe. Au bruit d'un verre qui se brise, C.C._ a relevé, à haute voix, que ce n'était pas bien. Au même moment, tous les membres de la bande se sont rués sur les deux frères. X._ a frappé C.C._ le premier. Les deux lésés ont reçu de nombreux coups de pied et coups de poing sur toutes les parties du corps. Ils sont tombés au sol. D.C._ a mis ses bras autour de sa tête et de son visage pour protéger au mieux le matériel médical implanté dans son crâne et dans sa poitrine à la suite d'un accident vasculaire subi en 2013. C.C._ a cherché à défendre son frère, qu'il savait fragile. Il a crié aux jeunes présents de ne pas le frapper; ses supplications sont restées vaines. Il s'est retrouvé à deux ou trois reprises au sol; il est parvenu à se relever. A une occasion, il s'est notamment agrippé aux habits d'un jeune qui est tombé à terre avec lui.
A un moment donné, X._ s'est rendu compte de la présence d'une patrouille de police qui venait dans leur direction. Il a enjoint ses camarades de quitter les lieux en criant: " On se casse maintenant ". Il est toutefois revenu en arrière et a assené un dernier coup de pied à C.C._ qui gisait au sol, inanimé. C'est lui qui, durant les événements, a adopté le comportement le plus violent.
Après l'agression, le groupe d'assaillants s'est scindé en deux. X._ et E._ se sont engouffrés dans le parking du centre commercial du A._. Quant à Y._, il s'est dirigé vers la gare.
Selon les rapports médicaux, transporté en ambulance à l'Hôpital de F._, C.C._ a souffert de dermabrasions à la tête, au cou, au bras droit, à la jambe gauche, de plaies superficielles au cuir chevelu, au visage, aux oreilles, à la lèvre inférieure, sur les bras et les jambes, ainsi que d'ecchymoses sur ces mêmes parties du corps. D.C._ a notamment subi une tuméfaction eccchymotique sur le cuir chevelu et des ecchymoses sur le front, à l'abdomen, dans le dos, au coude gauche et sur les deux cuisses.
C.
X._ forme un recours en matière pénale contre le jugement du 25 février 2019. Il conclut, avec suite de frais et dépens, à sa réforme en ce sens qu'il est acquitté du chef d'accusation d'agression, que l'Etat du Valais lui paie un montant de 15'400 fr. à titre de détention injustifiée et que les frais judiciaires des instances cantonales sont mis à sa charge " dans une très moindre mesure, le solde étant mis à la charge de l'Etat du Valais ". Il sollicite le bénéfice de l'assistance judiciaire.

Considérant en droit :
1.
Le recourant invoque une violation du droit d'être entendu, sous forme de défaut de motivation du jugement cantonal. La cour cantonale aurait retenu " sans discussion " la deuxième audition de C.C._, soit lorsque celui-ci a identifié le recourant en personne à 99%, alors qu'elle aurait dû retenir le fait que, lors de sa première audition, celui-ci n'a pas été en mesure de le reconnaître sur les planches photographiques que lui a montrées la police. Contrairement à ce que semble prétendre le recourant, la cour cantonale ne s'est pas uniquement fondée sur les déclarations de C.C._ lors de l'audience pour arriver à la conclusion que le recourant avait commis les faits qui lui sont reprochés. Elle s'est également fondée sur les déclarations d'un policier qui faisait partie de la patrouille pédestre - laquelle a entendu les cris et est intervenue sur les lieux quelques secondes après les faits - et qui a croisé le recourant parmi d'autres jeunes en chemin et l'a clairement identifié, parce qu'il avait déjà eu affaire à lui lors de plusieurs interventions en ville de F._. La cour cantonale s'est aussi fondée sur les déclarations d'une témoin de la scène qui a dit que " l'un des individus avait attiré son attention car il était plus grand que les autres et avait une peau basanée " ainsi que sur celles de D.C._, qui a immédiatement indiqué aux agents de police que son frère et lui avaient été agressés par des jeunes, " parmi lesquels un grand individu de couleur " (pièce 531). Selon le jugement attaqué, lors de son interrogatoire du 8 octobre 2015, il a encore précisé que l'assaillant le plus agressif de la bande était un jeune " au teint de peau basané ", de " relative grande taille ", qui " portait un haut clair, peut-être blanc même ". Contrairement à ce que prétend le recourant, le jugement est donc suffisamment motivé. Le grief du recourant est rejeté.
2.
Le recourant se plaint d'arbitraire dans l'appréciation des preuves et l'établissement des faits pertinents. Il reproche en outre à la cour cantonale d'avoir violé le principe de la présomption d'innocence.
2.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (art. 105 al. 1 LTF), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 1.1 p. 155 s.; <ref-ruling> consid. 2.3.1 p. 244). Le Tribunal fédéral n'entre ainsi pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 1.1 p. 156; <ref-ruling> consid. 2.4 p. 368 et les références citées).
La présomption d'innocence, garantie par les art. 10 CPP, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe " in dubio pro reo ", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large (<ref-ruling> consid. 2.2.3.1 p. 348 s.; <ref-ruling> consid. 2a p. 40 ss). En tant que règle sur le fardeau de la preuve, elle signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter au prévenu. Comme règle d'appréciation des preuves (sur la portée et le sens précis de la règle sous cet angle, cf. <ref-ruling> précité consid. 2.2.3.3 p. 351 s.), la présomption d'innocence signifie que le juge ne doit pas se déclarer convaincu de l'existence d'un fait défavorable à l'accusé si, d'un point de vue objectif, il existe des doutes quant à l'existence de ce fait. Il importe peu qu'il subsiste des doutes seulement abstraits et théoriques, qui sont toujours possibles, une certitude absolue ne pouvant être exigée. Il doit s'agir de doutes sérieux et irréductibles, c'est-à-dire de doutes qui s'imposent à l'esprit en fonction de la situation objective. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe " in dubio pro reo ", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> précité consid. 2.2.3.3 p. 351 s.; <ref-ruling> consid. 1.1 p. 503; <ref-ruling> consid. 7 p. 82).
Si l'autorité cantonale a forgé sa conviction quant aux faits sur la base d'un ensemble d'éléments ou d'indices convergents, il ne suffit pas que l'un ou l'autre de ceux-ci ou même chacun d'eux pris isolément soit à lui seul insuffisant. L'appréciation des preuves doit en effet être examinée dans son ensemble. Il n'y a ainsi pas d'arbitraire si l'état de fait retenu pouvait être déduit de manière soutenable du rapprochement de divers éléments ou indices. De même, il n'y a pas d'arbitraire du seul fait qu'un ou plusieurs arguments corroboratifs apparaissent fragiles, si la solution retenue peut être justifiée de façon soutenable par un ou plusieurs arguments de nature à emporter la conviction (arrêts 6B_586/2019 du 3 juillet 2019 consid. 1.1; 6B_505/2019 du 26 juin 2019 consid. 3.1).
2.2. Dans son recours, le recourant reproche en substance à la cour cantonale d'avoir retenu qu' " il était le premier et principal assaillant des frères C._ " (cf. recours, p. 8), alors que, lors de sa première audition, C.C._ a indiqué à plusieurs reprises que le jeune homme qui l'avait attaqué portait une jaquette à capuche claire ou blanche, ce qui, au moment des faits, n'était pas le cas du recourant, étant précisé qu'aucune capuche n'a été retrouvée selon la liste des objets séquestrés. Dans son exposé des faits " non contestés ", le recourant reconnaît toutefois s'être mêlé à la bagarre pour " calmer les choses " et " séparer les gens ", tout en soulignant qu'il n'a donné aucun coup (recours, para. 7).
Or, le recourant a été reconnu coupable d'agression au sens de l'art. 134 CP. Conformément à cette disposition, se rend coupable de ladite infraction celui qui participe à une agression dirigée contre une ou plusieurs personnes au cours de laquelle l'une d'entre elles ou un tiers a trouvé la mort ou subi une lésion corporelle. Pour que les éléments constitutifs de l'agression, qui est une infraction de mise en danger, soient réunis, il faut qu'une ou plusieurs des personnes agressées soient blessées ou tuées. Par ailleurs, l'auteur se rend passible d'une peine du seul fait de sa participation à l'agression (<ref-ruling> consid. 2.1.1 p. 153 s.; arrêt 6B_516/2014 du 29 janvier 2015 consid. 1).
En l'espèce, le recourant reproche uniquement à la cour cantonale d'avoir considéré qu'il avait participé à l'agression en frappant la victime. Il ne remet pas en question le fait qu'il s'est trouvé, de manière intentionnelle, dans le groupe des agresseurs, la cour cantonale ayant constaté qu'il avait pris avec ses camarades la décision d'agresser les frères C._. Pour le surplus, il ne conteste pas non plus que la victime a subi des lésions corporelles à la suite de l'agression commise par le groupe auquel il appartenait. Cela suffit pour que soient réalisés les éléments constitutifs de l'agression au sens de l'art. 134 CP. Peu importe que le recourant ait ou non lui-même frappé les victimes. Peu importe également que l'instruction pénale n'ait porté que sur trois personnes, alors que les frères C._ auraient été agressés par une bande de quatre ou cinq individus, donc par deux autres individus également, dont l'un des deux aurait pu porter une capuche claire. En effet, l'infraction d'agression est réalisée du moment où deux personnes au moins auront pris part à une attaque physique dirigée contre autrui (cf. JEAN-PAUL ROS, in Commentaire Romand, Code pénal II, 2017, n° 11 ad art. 134 CP). Les griefs soulevés par le recourant sont dès lors sans objet.
3.
Le recours doit être rejeté. Comme il était dénué de chances de succès, la demande d'assistance judiciaire doit être rejetée (art. 64 al. 1 LTF). Le recourant supportera les frais judiciaires, qui seront fixés en tenant compte de sa situation économique, laquelle n'apparaît pas favorable (art. 65 al. 2 et 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton du Valais, Cour pénale II.
Lausanne, le 27 août 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Thalmann